JavaScript is required to for searching.
Navigationslinks �berspringen
Druckansicht beenden
Systemverwaltungshandbuch: Sicherheitsservices
search filter icon
search icon

Dokument-Informationen

Vorwort

Teil I Übersicht über die Sicherheit

1.  Sicherheitsservices (Überblick)

Teil II System-, Datei- und Gerätesicherheit

2.  Verwalten von Rechnersicherheit (Übersicht)

3.  Steuern des Zugriffs auf Systeme (Aufgaben)

4.  Steuern des Zugriffs auf Geräte (Aufgaben)

5.  Verwenden von Basic Audit Reporting Tool (Aufgaben)

6.  Steuern des Zugriffs auf Dateien (Aufgaben)

7.  Verwenden von Automated Security Enhancement Tool (Aufgaben)

Teil III Rollen, Berechtigungsprofile und Berechtigungen

8.  Verwenden von Rollen und Berechtigungen (Übersicht)

9.  Rollenbasierte Zugriffssteuerung (Aufgaben)

10.  Rollenbasierte Zugriffssteuerung (Übersicht)

11.  Berechtigungen (Aufgaben)

Verwalten und Verwenden von Berechtigungen (Übersicht der Schritte)

Verwalten von Berechtigungen (Übersicht der Schritte)

Verwalten von Berechtigungen

So legen Sie die Berechtigungen auf einem Prozess fest

So legen Sie die für ein Programm erforderlichen Berechtigungen fest

So fügen Sie Berechtigungen zu einem Befehl hinzu

So weisen Sie Berechtigungen einem Benutzer oder einer Rolle zu

So begrenzen Sie die Berechtigungen eines Benutzers oder einer Rolle

So führen Sie ein Shell-Skript mit privilegierten Befehlen aus

Festlegen Ihrer Berechtigungen (Übersicht der Schritte)

Festlegen Ihrer zugewiesenen Berechtigungen

So legen Sie die Ihnen direkt zugewiesenen Berechtigungen fest

So legen Sie die ausführbaren privilegierten Befehle fest

So legen Sie die von einer Rolle ausführbaren privilegierten Befehle fest

12.  Berechtigungen (Referenz)

Teil IV Kryptografische Services

13.  Oracle Solaris Cryptographic Framework (Übersicht)

14.  Oracle Solaris Cryptographic Framework (Aufgaben)

15.  Oracle Solaris Key Management Framework

Teil V Authentifizierungsservices und sichere Kommunikation

16.  Verwenden von Authentifizierungsservices (Aufgaben)

17.  Verwenden von PAM

18.  Verwenden von SASL

19.  Verwenden von Oracle Solaris Secure Shell (Aufgaben)

20.  Oracle Solaris Secure Shell (Referenz)

Teil VI Kerberos-Service

21.  Einführung zum Kerberos-Service

22.  Planen des Kerberos-Service

23.  Konfigurieren des Kerberos-Service (Aufgaben)

24.  Kerberos-Fehlermeldungen und -Fehlerbehebung

25.  Verwalten von Kerberos-Hauptelementen und Richtlinien (Aufgaben)

26.  Verwenden von Kerberos-Anwendungen (Aufgaben)

27.  Der Kerberos-Service (Referenz)

Teil VII Prüfung bei Oracle Solaris

28.  Prüfung bei Oracle Solaris (Übersicht)

29.  Planen der Oracle Solaris-Prüfung

30.  Verwalten der Oracle Solaris-Prüfung (Aufgaben)

31.  Prüfung bei Oracle Solaris (Referenz)

Glossar

Index

Verwalten von Berechtigungen

Die sicherste Art zum Verwalten von Berechtigungen für Benutzer und Rollen besteht darin, die Verwendung von Berechtigungen auf Befehle in einem Berechtigungsprofil zu beschränken. Das Berechtigungsprofil wird dann in eine Rolle eingeschlossen. Die Rolle wird einem Benutzer zugewiesen. Wenn der Benutzer die ihm zugewiesene Rolle annimmt, stehen die privilegierten Befehle zur Ausführung in einer Profil-Shell zur Verfügung. Die folgenden Verfahren zeigen, wie Sie Berechtigungen zuweisen, entfernen und Fehler bei der Verwendung von Berechtigungen suchen können.

So legen Sie die Berechtigungen auf einem Prozess fest

Dieses Verfahren zeigt, wie Sie festlegen können, welche Berechtigungen Ihren Prozessen zur Verfügung stehen. Die Liste enthält keine Berechtigungen, die bestimmten Befehlen zugewiesen wurden.

Beispiel 11-1 Festlegen der Berechtigungen in Ihrer aktuellen Shell

Im folgenden Beispiel werden die Berechtigungen im übergeordneten Prozess des Shell-Prozesses des Benutzers aufgeführt. Im zweiten Beispiel werden die vollständigen Namen der Berechtigungen aufgeführt. Die einzelnen Buchstaben in der Ausgabe beziehen sich auf die folgenden Berechtigungssätze:

E

Der effektive Berechtigungssatz

I

Der vererbbare Berechtigungssatz

P

Der zugelassene Berechtigungssatz

L

Der begrenzte Berechtigungssatz.

% 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

Beispiel 11-2 Festlegen der Berechtigungen einer Rolle, die Sie annehmen können

Rollen verwenden eine administrative Shell oder Profil-Shell. Sie müssen eine Rolle annehmen und die Shell der Rolle verwenden, um die Berechtigungen aufzulisten, die der Rolle direkt zugewiesen wurden. Im folgenden Beispiel hat die Rolle sysadmin keine direkt zugewiesenen Berechtigungen.

% 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

So legen Sie die für ein Programm erforderlichen Berechtigungen fest

Dieser Vorgang legt fest, welche Berechtigungen ein Befehl oder ein Prozess zur erfolgreichen Ausführung benötigt.

Bevor Sie beginnen

Der Befehl oder Prozess muss fehlgeschlagen sein, damit dieser Vorgang ausgeführt werden kann.

  1. Geben Sie den Befehl, der fehlschlägt, als Argument zum Fehlersuchbefehl ppriv ein.
    % 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. Bestimmen Sie, welcher Systemaufruf fehlschlägt, indem Sie die syscall-Nummer in der Datei /etc/name_to_sysnum suchen.
    % grep 224 /etc/name_to_sysnum
    creat64                 224

Beispiel 11-3 Verwenden Sie den Befehl truss zum Untersuchen der Verwendung von Berechtigungen

Mit dem Befehl truss können Sie Fehler bei der Berechtigungsverwendung in einer normalen Shell suchen. Der folgende Befehl durchsucht z. B. den fehlgeschlagenen Prozess touch nach Fehlern:

% truss -t creat touch /etc/acct/yearly
creat64("/etc/acct/yearly", 0666)            
                       Err#13 EACCES [file_dac_write]
touch: /etc/acct/yearly cannot create

Die erweiterten /proc-Schnittstellen melden die fehlende Berechtigung nach dem Fehlercode in der Ausgabe truss.

Beispiel 11-4 Verwenden des Befehls ppriv zum Untersuchen der Berechtigungsverwendung in einer Profil-Shell

Mit dem Befehl ppriv können Sie die Verwendung von Berechtigungen in einer Profil-Shell nach Fehlern durchsuchen. Wenn Sie einem Benutzer ein Berechtigungsprofil zuweisen und das Berechtigungsprofil Befehle mit Berechtigungen enthält, müssen die Befehle in einer Profil-Shell eingegeben werden. Wenn die privilegierten Befehle in eine normale Shell eingegeben werden, werden die Befehle nicht mit Berechtigung ausgeführt.

In diesem Beispiel kann der Benutzer jdoe die Rolle objadmin annehmen. Die Rolle objadmin enthält das Berechtigungsprofil "Object Access Management". Dieses Berechtigungsprofil ermöglicht der Rolle objadmin, Berechtigungen für Dateien zu ändern, über die objadmin nicht verfügt.

Im folgenden Auszug kann jdoe die Berechtigungen für die Datei useful.script nicht ändern:

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

Wenn jdoe die Rolle objadmin annimmt, werden die Berechtigungen für die Datei geändert:

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

Beispiel 11-5 Ändern einer Datei, die dem root-Benutzer gehört

Dieses Beispiel zeigt den Schutz gegen Berechtigungseskalation. Eine Diskussion hierzu finden Sie unter Verhindern von Berechtigungseskalation. Die Datei gehört dem root-Benutzer. Die weniger leistungsstarke Rolle, objadmin, benötigt zum Ändern der Eigentümerschaft der Datei alle Berechtigungen; daher schlägt der Vorgang fehl.

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

So fügen Sie Berechtigungen zu einem Befehl hinzu

Sie fügen einem Befehl Berechtigungen hinzu, wenn Sie den Befehl einem Berechtigungsprofil hinzufügen. Die Berechtigungen aktivieren die Rolle, die das Berechtigungsprofil zum Ausführen des administrativen Befehls enthält, erhalten jedoch keine anderen Superuser-Fähigkeiten.

Bevor Sie beginnen

Der Befehl oder das Programm muss Berechtigungen erkennen. Eine vollständigere Diskussion hierzu finden Sie unter Zuweisen von Berechtigungen zu Prozessen.

  1. Melden Sie sich als Superuser an oder nehmen Sie eine entsprechende Rolle an.

    Rollen umfassen Autorisierungen und privilegierte Befehle. Weitere Informationen zu Rollen finden Sie unter Konfigurieren von RBAC (Übersicht der Schritte).

  2. Öffnen Sie die Solaris Management Console-GUI.

    Eine Anleitung hierzu finden Sie unter So nehmen Sie eine Rolle in der Solaris Management Console an.

  3. Verwenden Sie das Berechtigungstool, um ein angemessenes Profil zu aktualisieren.

    Wählen Sie den Befehl, den Sie einschließen möchten. Fügen Sie für jeden enthaltenen Befehl die erforderlichen Berechtigungen hinzu.


    Achtung

    Achtung - Wenn Sie Befehle in ein Berechtigungsprofil einschließen und den Befehlen Berechtigungen hinzufügen, werden die Befehle mit diesen Berechtigungen ausgeführt, wenn die Befehle in einer Profil-Shell ausgeführt werden.

    Die Reihenfolge der Profile ist relevant. Die Profil-Shell führt einen Befehl oder eine Aktion mit den Sicherheitsattributen aus, die im ersten Profil in der Profilliste des Kontos angegeben sind. Wenn sich z. B. der Befehl chgrp im Berechtigungsprofil "Object Access Management" mit Berechtigungen befindet und "Object Access Management" das erste Profil darstellt, in dem der Befehl chgrp gefunden wird, wird der Befehl chgrp mit den im Profil "Object Access Management" angegebenen Berechtigungen ausgeführt.


So weisen Sie Berechtigungen einem Benutzer oder einer Rolle zu

Sie können einigen Benutzern mit einer bestimmten Berechtigung immer vertrauen. Sehr spezifische Berechtigungen, die einen kleinen Teil des Systems beeinflussen, sind gut für die Zuweisung zu einem Benutzer geeignet. Eine Diskussion zu den Implikationen direkt zugewiesener Berechtigungen finden Sie unter Sicherheitsüberlegungen bei direkter Zuweisung von Sicherheitsattributen.

Das folgende Verfahren ermöglicht dem Benutzer jdoe die Verwendung hochauflösender Timer.

  1. Nehmen Sie die Rolle "Primary Administrator" an, oder melden Sie sich als Superuser an.

    Die Rolle "Primary Administrator" enthält das gleichnamige Profil. Informationen zum Erstellen von Rollen und Zuweisen von Rollen zu Benutzern finden Sie in Kapitel 2, Working With the Solaris Management Console (Tasks) in System Administration Guide: Basic Administration.

  2. Fügen Sie die Berechtigung hinzu, die hochauflösende Timer zu den ursprünglichen vererbbaren Berechtigungssätzen des Benutzers hinzufügt.
    $ usermod -K defaultpriv=basic,proc_clock_highres jdoe

    Die Werte für das defaultpriv-Schlüsselwort ersetzen die vorhandenen Werte. Daher muss der Wert basic angegeben werden, damit der Benutzer die basic-Rechte beibehalten kann. In der Standardkonfiguration verfügen alle Benutzer über grundlegende Berechtigungen.

  3. Lesen Sie den erzeugten user_attr-Eintrag.
    $ grep jdoe /etc/user_attr
    jdoe::::type=normal;defaultpriv=basic,proc_clock_highres

Beispiel 11-6 Erstellen einer Rolle mit Berechtigungen zum Konfigurieren der Systemzeit

In diesem Beispiel wird eine Rolle erstellt, deren einzige Aufgabe die Verwaltung der Systemzeit ist.

$ /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

Die Zeile -K ist zu Anzeigezwecken eingeschlossen.

Würde die Rolle lokal erstellt, würde der Eintrag user_attr für die Rolle ähnlich dem folgenden angezeigt werden:

clockmgr:::Role that sets system time:
type=role;defaultpriv=basic,proc_priocntl,sys_cpu_config,
proc_clock_highres,sys_time

So begrenzen Sie die Berechtigungen eines Benutzers oder einer Rolle

Sie können die Berechtigungen begrenzen, die einem Benutzer oder einer Rolle zur Verfügung stehen, indem Sie den grundlegenden Satz oder den begrenzten Satz reduzieren. Sie sollten einen triftigen Grund haben, wenn Sie die Berechtigungen des Benutzers auf diese Weise begrenzen, da solche Beschränkungen unerwünschte Nebeneffekte haben können.


Achtung

Achtung - Sie sollten die Fähigkeiten jedes Benutzers gründlich testen, wenn sein grundlegender Satz oder der begrenzte Satz geändert wurde.

  • Wenn der grundlegende Satz weniger als der Standard enthält, können Benutzer daran gehindert werden, das System zu verwenden.

  • Wenn der begrenzte Satz weniger als alle Berechtigungen enthält, schlagen Prozesse, die mit einer effektiven UID=0 ausgeführt werden müssen, möglicherweise fehl.


  1. Legen Sie die Berechtigungen im grundlegenden und im begrenzten Satz eines Benutzers fest.

    Informationen zu diesem Vorgang finden Sie unter So legen Sie die Berechtigungen auf einem Prozess fest.

  2. (Optional) Entfernen Sie eine der Berechtigungen aus dem grundlegenden Satz.
    $ usermod -K defaultpriv=basic,!priv-name username

    Durch Entfernen der Berechtigung proc_session hindern Sie den Benutzer daran, Prozesse außerhalb seiner aktuellen Sitzung zu untersuchen. Durch Entfernen der Berechtigung file_link_any hindern Sie den Benutzer daran, Hard Links zu Dateien herzustellen, die ihm nicht gehören.


    Achtung

    Achtung - Entfernen Sie nicht die Berechtigungen proc_fork und proc_exec. Ohne diese Berechtigungen kann der Benutzer das System nicht verwenden. Tatsächlich werden diese beiden Berechtigungen nur aus gutem Grund von Dämonen entfernt, die nicht fork() oder exec() auf anderen Prozessen ausführen sollten.


  3. (Optional) Entfernen Sie eine der Berechtigungen aus dem begrenzten Satz.
    $ usermod -K limitpriv=all,!priv-name username
  4. Testen Sie die Funktionen von username.

    Melden Sie sich als username an und versuchen Sie, die Aufgaben auszuführen, die username auf dem System ausführen muss.

Beispiel 11-7 Entfernen von Berechtigungen aus dem begrenzten Satz eines Benutzers

Im folgenden Beispiel werden alle Sitzungen, die auf der ursprünglichen Anmeldung von jdoe basieren, daran gehindert, die Berechtigung sys_linkdir zu verwenden. Das bedeutet, dass der Benutzer keine Hard Links zu Verzeichnissen herstellen oder Verbindungen zu Verzeichnissen entfernen kann, selbst wenn er den Befehl su ausführt.

$ usermod -K limitpriv=all,!sys_linkdir jdoe
$ grep jdoe /etc/user_attr
jdoe::::type=normal;defaultpriv=basic;limitpriv=all,!sys_linkdir

Beispiel 11-8 Entfernen von Berechtigungen aus dem grundlegenden Satz eines Benutzers

Im folgenden Beispiel werden alle Sitzungen, die auf der ursprünglichen Anmeldung von jdoe basieren, daran gehindert, die Berechtigung proc_session zu verwenden. Das bedeutet, dass der Benutzer keine Prozesse außerhalb der Benutzersitzung untersuchen kann, selbst wenn er den Befehl su ausführt.

$ usermod -K defaultpriv=basic,!proc_session jdoe
$ grep jdoe /etc/user_attr
jdoe::::type=normal;defaultpriv=basic,!proc_session;limitpriv=all

So führen Sie ein Shell-Skript mit privilegierten Befehlen aus


Hinweis - Wenn Sie ein Shell-Skript erstellen, das Befehle mit geerbten Berechtigungen ausführt, muss das geeignete Berechtigungsprofil die Befehle mit ihnen zugewiesenen Berechtigungen enthalten.


  1. Beginnen Sie das Skript mit /bin/pfsh oder einer anderen Profil-Shell in der ersten Zeile.
    #!/bin/pfsh
    # Copyright (c) 2009, 2011 by Oracle Corporation
  2. Legen Sie die Berechtigungen fest, die die Befehle im Skript benötigen.
    % ppriv -eD script-full-path
  3. Öffnen Sie die Solaris Management Console-GUI.

    Eine Anleitung hierzu finden Sie unter So nehmen Sie eine Rolle in der Solaris Management Console an. Wählen Sie eine Rolle, mit der sie ein Berechtigungsprofil erstellen können, z. B. Primäradministrator.

  4. Verwenden Sie das Berechtigungstool, um ein angemessenes Profil zu erstellen oder zu aktualisieren.

    Wählen Sie das Skript und schließen Sie im Berechtigungsprofil jeden Befehl im Shell-Skript ein, den Berechtigungen zur Ausführung benötigen. Fügen Sie für jeden enthaltenen Befehl die erforderlichen Berechtigungen hinzu.


    Achtung

    Achtung - Die Reihenfolge der Berechtigungsprofile ist relevant. Die Profil-Shell führt die früheste Instanz eines Befehls in der Profilliste aus. Wenn sich z. B. der Befehl chgrp im Berechtigungsprofil "Object Access Management" befindet und "Object Access Management" das erste Profil darstellt, in dem der Befehl chgrp gefunden wird, wird der Befehl chgrp mit den im Profil "Object Access Management" angegebenen Berechtigungen ausgeführt.


  5. Fügen Sie das Berechtigungsprofil einer Rolle hinzu und weisen Sie die Rolle einem Benutzer zu.

    Um das Profil auszuführen, nimmt der Benutzer die Rolle an und führt das Skript in der Profil-Shell der Rolle aus.