4.2 Autorisierung eines Prozesses - auch Sicherheitsprofil, Autorisierungsprofil, Privilegierung - (authorization, privileges, credentials)! Autorisierung nicht mit Authentisierung verwechseln! gehört zu den Attributen eines Prozesses steuert die Zulässigkeit von Systemaufrufen, und damit den Zugriff auf Systemobjekte (z.b. Dateien), besteht typischerweise aus Benutzernummer, Gruppennummer, Sicherheitsstufe (clearance), Rolle,... ITS-4.2 1
4.2.1 Unix Jeder Benutzer hat einen Namen (Benutzerkennung, 3.1 ) und ist einer benannten Benutzergruppe zugeordnet. Systemintern werden Benutzer und Gruppen durch Nummern identifiziert, die man in den Einträgen von /etc/passwd und /etc/group finden kann: UID - user identifier ( 0 für Systemverwalter root) GID - group identifier ( 0 für Systemgruppe wheel) Jeder Benutzer gehört zu einer Primärgruppe, die in der Passwortdatei für ihn vermerkt ist, kann aber weiteren Gruppen angehören gemäß den Angaben in der Gruppendatei, z.b. prof:password:gid:alt,fehr,lohr,... ITS-4.2 2
Prozessattribute zur Autorisierung eines Prozesses: RUID (real user id) EUID (effective user id) - UID des Prozesserzeugers - UID für Schutz-Entscheidungen RGID (real group id) - GID des Prozesserzeugers EGID (effective group id) - GID für Schutz-Entscheidungen Scheduling-Klasse(Solaris) - RT oder TS oder IA ITS-4.2 3
Initialisierung der Autorisierung: login Angaben in Passwortdatei bestimmen RUID/EUID und RGID/EGID su name newgrp name ( substitute user ) wie login, neue Shell neue Shell mit neuer RGID/EGID fork übernimmt Attribute vom Erzeugerprozess... weitere ITS-4.2 4
Kontrollierte Änderung der Autorisierung (durch Autorisierung geschützt!): priocntl(...) Scheduling-Klasse verändern, weitere Scheduling-bezogene Maßnahmen Vor.:..... ITS-4.2 5
setuid(uid) RUID und EUID auf uid setzen Vor.: uid = RUID oder uid = EUID oder EUID = 0 setgid(gid)(analog) RGID und EGID auf gid setzen Vor.: gid = RGID oder gid = EGID oder EUID = 0 (zugehörige ungeschützte Abfragen: getuid(), geteuid(),...) ITS-4.2 6
Veränderung der Autorisierung auch durch exec(prog,...) gemäß den Dateiattributen ( 4.3.1.1) der Programmdatei prog: suid (setuid bit), sgid (setgid bit), uid ( = UID des Datei-Eigners), gid ( = GID einer Eigner-Gruppe) wie folgt: wenn suid, dann EUID auf uid setzen; wenn guid, dann EGID auf gid setzen. Ziel: kontrollierte Änderung der Autorisierung - gebunden an die Ausführung eines bestimmten Programms ITS-4.2 7
exec mit SUID und UID = y RUID = x EUID = x RUID = x EUID = y setuid(x) x führt y-programm mit y-autorisierung aus ITS-4.2 8
Datenabstraktion mit Programmiersprache: bei Dateien: prozedurale Schnittstelle Programme mit SUID und UID = y verborgene Datenrepräsentation Dateien mit UID = y syntaktisch über gleiche UID Kapselung ITS-4.2 9
Beispiele: Systemprogramme mit y = 0 (Super-User) passwd ändert nach Eingabe eines neuen Passworts das Passwort des Benutzers in der Passwortdatei login usr su usr ändert nach korrekter Passworteingabe für usr die Autorisierung der Shell in diejenige für usr startet nach korrekter Passworteingabe für usr eine neue Shell mit der Autorisierung für usr newgrp gr (Solaris) startet neue Shell mit neuer Autorisierung RGID/EGID gemäß Gruppe gr (RUID/EUID bleiben unverändert) Vor.: Benutzer muß der Gruppe angehören und ggfls. Gruppenpasswort kennen) ITS-4.2 10
Variante im POSIX-Standard (Linux, Solaris,...): Prozeß hat zusätzlich zu RUID/EUID/RGID/EGID saved -Versionen SUID/SGID und damit setuid(uid) EUID auf uid setzen; RUID, SUID auf uid setzen falls EUID = 0 Vor.: uid = RUID oder uid = SUID oder EUID = 0 setgid(gid) (analog) EGID auf gid setzen; RGID auf gid setzen falls EGID = 0 Vor.: gid = RGID oder gid = SGID oder EUID = 0 ITS-4.2 11
RUID = x EUID = x SUID =... RUID = x EUID = x SUID = y exec mit SUID und UID = y RUID = x EUID = y SUID = y setuid(x) setuid(y) beliebiges Hin- und Herschalten der EUID! ITS-4.2 12
4.2.2 Windows Benutzer: vordefiniert sind (System Unix root) Administrator ( Unix root) Guest Krbtgt Interne Benutzerkennung: user SID (security identifier) ( Unix UID) Gruppen: vordefiniert sind Administrators ( Unix wheel) Account Operators Everyone..... Interne Gruppenkennung: group SID (security identifier) ( Unix GID) ITS-4.2 13
Autorisierung eines Prozesses: Prozessattribut SAT (system access token) enthält Benutzer und alle seine Gruppen, intern jeweils repräsentiert durch SIDs, Privilegien (privileges, user rights), die spezifische Erlaubnisse erteilen (s.u.) Default Access Control List Voreinstellungen für Schutzstatus Default Owner SID neu erzeugter Dateien weitere Daten ITS-4.2 14
Privilegien (user rights, meistens Gruppen zugeordnet): Änderung des Schutzstatus eigener Dateien (und anderer Systemobjekte) (standardmäßig vorhandenes Privileg) SeTakeOwnershipPrivilege Inbesitznahme jedes beliebigen Systemobjekts SeTcbPrivilege Erlangen maximaler Rechte (als Teil der "Trusted Computing Base"; "act as part of the operating system") SeShutdownPrivilege Herunterfahren des Rechners und etliche andere (www.ultimatewindowssecurity.com/rights.html) ITS-4.2 15
setuid-technik à la Unix gibt es in Windows nicht. statt Aufruf eines setuid-programms Beauftragung eines Dienstprozesses Gegebenenfalls Anpassung der Autorisierung durch Nachahmung (impersonation) des Klienten: Thread des Dienstes übernimmt das SAT des Klienten ITS-4.2 16
Benutzerverwaltung: durch Administrator ITS-4.2 17
Erweiterte Benutzerverwaltung : ITS-4.2 18
ITS-4.2 19