Università degli Studi di Milano Facoltà di Scienze Matematiche, Fisiche e Naturali Anno Accademico 2007/2008 31 Ottobre 2007
Architettura del sistema di controllo degli accessi ACL Security Principal richiesta di accesso SRM accesso consentito Object accesso negato
Nozioni fondamentali Security principal: una qualunque entità che può essere autenticata (utenti, gruppi, computer, servizi) Object: una qualsiasi risorsa che può essere manipolata da un programma o da un processo Security reference monitor: componente dell executive (ntoskrnl.exe) che si occupa della gestione degli accessi agli oggetti Access Control List: lista ordinata di access control entry che definiscono i permessi relativi ad un oggetti User-based authorization: ogni applicazione è eseguita nel security context dell utente che l ha creata
SID Security IDentifier valore numerico di lunghezza variabile che identifica in modo univoco un security principal il SO utilizza i SID per fare riferimento ad un security principal Esempio (user SID) revision number issuing authority subauthority identifier relative identifier S-1-5-21-1409082233-1343024091-839522115-1003 Note SID utenti locali ottenuti concatenando un RID 1000 al SID del computer
Alcuni SID well-known SID S-1-2 issuing authorities S-1-5 S-1-1-0 S-1-5-4 SID predefiniti S-1-5-11 S-1-5-13 S-1-5-21 NT subauthorities S-1-5-32 S-1-5-32-544 gruppi predefiniti S-1-5-32-545 S-1-5-32-547 S-1-5-...-500 RID well-known S-1-5-...-501 S-1-5-...-1000 Nome Local Authority NT Authority Everyone Interactive Authenticated Users Terminal Server Users NT Domain Built-in Domain Administrators Users Power Users Administrator Guest primo utente creato
Visualizzazione SID account C:\>psgetsid... SID for \\SECLAB-WIN: S-1-5-21-1409082233-1343024091-839522115 C:\>psgetsid sicurezza... SID for SECLAB-WIN\sicurezza: S-1-5-21-1409082233-1343024091-839522115-1003 C:\>psgetsid S-1-5-21-1409082233-1343024091-839522115-500... Account for SECLAB-WIN\S-1-5-21-1409082233-1343024091-839522115-500: User: SECLAB-WIN\Administrator
Access token Access token SID utente SID gruppi Default owner Privilegi... struttura dati che definisce il security context del security principal a cui è associata creato dall executive al momento dell autenticazione dell utente winlogon.exe associa il token all utente e a userinit.exe di default viene ereditato dai processi creati successivamente
Privilegi autorizzazione ad effettuare un operazione (non relativa ad un oggetto specifico es. spegnere il computer) un privilegio posseduto può essere abilitato o disabilitato Esempi Nome SeDebugPrivilege SeLoadDriverPrivilege SeShutdownPrivilege SeSystemTimePrivilege SeTakeOwnership Diritti concessi debugging di un qualunque processo load e unload dei driver spegnimento del sistema aggiornamento di data e ora appropriarsi di un oggetto
Visualizzazione access token (Windows XP Support Tools) C:\>whoami /all [User] = "SECLAB-WIN\sicurezza" S-1-5-21-1409082233-1343024091-839522115-1003 [Group 1] = "SECLAB-WIN\Nessuno" S-1-5-21-1409082233-1343024091-839522115-513 [Group 2] = "Everyone" S-1-1-0 [Group 3] = "BUILTIN\Administrators" S-1-5-32-544 [Group 4] = "BUILTIN\Users" S-1-5-32-545 [Group 5] = "NT AUTHORITY\INTERACTIVE" S-1-5-4 [Group 6] = "NT AUTHORITY\Authenticated Users" S-1-5-11 [Group 7] = "LOCALE" S-1-2-0 (X) SeChangeNotifyPrivilege = Ignorare controllo incrociato (O) SeSecurityPrivilege = Gestione file registro di controllo e di protezione (O) SeBackupPrivilege = Backup di file e directory (O) SeRestorePrivilege = Ripristino di file e directory (O) SeSystemtimePrivilege = Modifica dell orario di sistema (O) SeShutdownPrivilege = Arresto del sistema (O) SeRemoteShutdownPrivilege = Arresto forzato da un sistema remoto (O) SeTakeOwnershipPrivilege = Acquisizione propriet di file o altri oggetti (O) SeDebugPrivilege = Debug di programmi (O) SeSystemEnvironmentPrivilege = Modifica dei valori di ambiente firmware (O) SeSystemProfilePrivilege = Creazione di profilo delle prestazioni del sistemae (O) SeProfileSingleProcessPrivilege = Creazione di profilo del singolo processo (O) SeIncreaseBasePriorityPrivilege = Aumento della priorit di pianificazione (X) SeLoadDriverPrivilege = Caricamento/rimozione di driver di periferica (O) SeCreatePagefilePrivilege = Creazione di file di paging (O) SeIncreaseQuotaPrivilege = Regolazione limite risorse memoria per un processoe (X) SeUndockPrivilege = Rimozione del computer dall alloggiamento (O) SeManageVolumePrivilege = Esecuzione operazioni di manutenzione volume (X) SeImpersonatePrivilege = Rappresenta un client dopo l autenticazione (X) SeCreateGlobalPrivilege = Creazione oggetti globali
Security Descriptor Security descriptor SID owner SID gruppo SACL DACL ACE ACE ACE ACE struttura dati che contiene le informazioni di sicurezza associate ad un oggetto specifica: utente proprietario e gruppo principale a utenti e gruppi a cui consentire l accesso utenti e gruppi a cui negare l accesso politiche di auditing... DACL (Discretionary Access Control List) SACL (System Access Control List) a il gruppo è usato solo dal subsystem POSIX
Access Control List DACL Discretionary Access Control List può contenere due tipi di ACE: allow e deny ogni ACE contiene un SID (utente o gruppo), una access mask e alcuni flag una ACE concede o nega i permessi di accesso specificati nella maschera flag utilizzati per controllare la propagazione dell ACE verso oggetti figli DACL = NULL chiunque può accedere DACL = nessuno può accedere SACL System Access Control List utilizzata per definire quali operazioni devono essere scritte nell audit log di sistema
ACL Inheritance flags CONTAINER INHERIT (CI) INHERIT ONLY (IO) OBJECT INHERIT (OI) NO PROPAGATE (NP) ACE ereditata dagli oggetti figli container come ACE effettiva. L ACE ereditata è a sua volta ereditabile ACE inherit-only, non applicata all oggetto corrente ACE ereditata dai figli non-container come ACE effettiva, mentre come inherit-only dai container se l ACE è ereditata da un figlio, azzera i flag CI e OI dall ACE ereditata
ACL Creazione nuovi oggetti DACL per determinare la DACL da utilizzare per il nuovo oggetto, il sistema sceglie la prima regola applicabile tra le seguenti: 1 creatore dell oggetto + eventuali ACE ereditate 2 ACE ereditatabili dall oggetto padre 3 default DACL dall access token del creatore dell oggetto 4 DACL = NULL chiunque può accedere! SACL regole analoghe alle precedenti, ma non esiste default SACL
Visualizzazione e modifica ACL C:\foo>cacls. C:\foo BUILTIN\Administrators:(OI)(CI)F NT AUTHORITY\SYSTEM:(OI)(CI)F SECLAB-WIN\sicurezza:F CREATOR OWNER:(OI)(CI)(IO)F BUILTIN\Users:(OI)(CI)R BUILTIN\Users:(CI)(accesso speciale:) FILE_APPEND_DATA BUILTIN\Users:(CI)(accesso speciale:) FILE_WRITE_DATA C:\foo>echo test > bar C:\foo>cacls bar C:\foo\bar BUILTIN\Administrators:F NT AUTHORITY\SYSTEM:F SECLAB-WIN\sicurezza:F BUILTIN\Users:R C:\foo>cacls bar /E /G guest:r file elaborati: C:\foo\bar C:\foo>cacls bar C:\foo\bar BUILTIN\Administrators:F NT AUTHORITY\SYSTEM:F SECLAB-WIN\sicurezza:F BUILTIN\Users:R SECLAB-WIN\Guest:R cacls.exe (XP Support Tools) visualizza/modifica DACL dei file supporto incompleto per l ereditarietà
Controllo degli accessi Overview Object Security descriptor Subject Access token SID utente SID gruppi Default owner Privilegi... SO verifica ACEs query risolta SID owner SID gruppo SACL DACL ACE ACE ACE ACE
Controllo degli accessi Per determinare se concedere l accesso ad un oggetto: 1 se l oggetto ha DACL = NULL, l accesso è consentito 2 il sistema determina le ACE della DACL che si applicano all utente o ai gruppi specificati nell access token del soggetto 3 se tutti i permessi richiesti sono concessi da qualche ACE, allora l accesso è consentito 4 se qualcuno dei permessi richiesti è negato o non esplicitamente concesso, allora l accesso viene negato L ordine delle ACE è significativo!
Controllo degli accessi Esempio read Thread 1 Access token Object Security descriptor Utente: Gruppo1: Bar GroupA DACL Deny ACE Bar, R Thread 2 Access token write Allow ACE GroupB, RW Utente: Gruppo1: Gruppo1: Foo GroupA GroupB Allow ACE Everyone, R
Controllo degli accessi Strumenti cacls.exe, xcacls.exe editor ACL su oggetti del file system a (Proprietà Protezione) o registro (Proprietà Autorizzazioni) a disabilitare Strumenti Opzioni cartella Visualizzazione Utilizza condivisione file semplice Attenzione la rappresentazione delle ACL negli editor grafici può essere fuorviante tenere presente che le deny ACE precedono le allow ACE verificare con la tab Autorizzazioni valide