Università degli Studi di Milano Facoltà di Scienze Matematiche, Fisiche e Naturali Anno Accademico 2008/2009 5 Novembre 2008
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
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 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 : allow e deny ogni contiene un SID (utente o gruppo), una access mask e alcuni flag una concede o nega i permessi di accesso specificati nella maschera flag utilizzati per controllare la propagazione dell 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) ereditata dagli oggetti figli container come effettiva. L ereditata è a sua volta ereditabile inherit-only, non applicata all oggetto corrente ereditata dai figli non-container come effettiva, mentre come inherit-only dai container se l è ereditata da un figlio, azzera i flag CI e OI dall 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 ereditate 2 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 s query risolta SID owner SID gruppo SACL DACL
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 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, allora l accesso è consentito 4 se qualcuno dei permessi richiesti è negato o non esplicitamente concesso, allora l accesso viene negato L ordine delle è significativo!
Controllo degli accessi Esempio read Thread 1 Access token Object Security descriptor Utente: Gruppo1: Bar GroupA DACL Deny Bar, R Thread 2 Access token write Allow GroupB, RW Utente: Gruppo1: Gruppo1: Foo GroupA GroupB Allow 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 precedono le allow verificare con la tab Autorizzazioni valide