windows security windows security fabio santini.net senior developer evangelist...
Post on 01-May-2015
229 Views
Preview:
TRANSCRIPT
Windows SecurityWindows Security
Fabio SantiniFabio Santini.NET Senior Developer Evangelist.NET Senior Developer Evangelistfsantini@microsoft.com fsantini@microsoft.com Microsoft ItalyMicrosoft Italy
Windows SecurityWindows Security
Raffaele RialdiRaffaele RialdiMicrosoft C# MVPMicrosoft C# MVP http://mvp.support.microsoft.comhttp://mvp.support.microsoft.comMVP ProfileMVP Profile http://snipurl.com/f0cvhttp://snipurl.com/f0cvBlogBlog http://blogs/ugidotnet.org/raffaelehttp://blogs/ugidotnet.org/raffaele
malta@vevy.commalta@vevy.comVevy Europe SpAVevy Europe SpA
AgendaAgenda Termini baseTermini base SID, Logon Session, ACL, Privilegi, LSA…SID, Logon Session, ACL, Privilegi, LSA… Protocolli di autenticazioneProtocolli di autenticazione Impersonation e DelegationImpersonation e Delegation Code Access Security del Framework.NETCode Access Security del Framework.NET AuditingAuditing Q&AQ&A
Termini baseTermini base AutorizzazioneAutorizzazione !=!= Autenticazione Autenticazione
AutenticazioneAutenticazione – – Chi seiChi sei?? Autorizzazione – Cosa puoi fareAutorizzazione – Cosa puoi fare??
Principal – Principal – un’entità che può essere autenticataun’entità che può essere autenticata AuthorityAuthority – – un’un’entita che rappresenta un set entita che rappresenta un set
specifico di specifico di principalprincipal TTrust – rust – è importante ‘fidarsi’ di alcune è importante ‘fidarsi’ di alcune authority authority
che sono in grado di verificare correttamente le che sono in grado di verificare correttamente le identitàidentità AuthoritiesAuthorities ( (dominidomini) ) possono fidarsi a vicenda possono fidarsi a vicenda ((la la
fiducia è transitiva fiducia è transitiva da da win2k)win2k)
Termini baseTermini base User Accounts:User Accounts:
Gli user account sono identificati da uno user name Gli user account sono identificati da uno user name e una password. Lo user name è l’etichetta e la e una password. Lo user name è l’etichetta e la password è la stringa di autenticazione per password è la stringa di autenticazione per l’account. l’account.
Group account Group account Si utilizzano i group account per definire i permessi Si utilizzano i group account per definire i permessi
a utenti simili e per semplificare la gestione degli a utenti simili e per semplificare la gestione degli account. account.
Trusted Computing Base (TCB)Trusted Computing Base (TCB) TCB – TCB – definita come definita come Federal Standard 1037CFederal Standard 1037C
Il Kernel mode è la parte principale del Il Kernel mode è la parte principale del TCBTCB, non ha limiti di accesso , non ha limiti di accesso a nessuna risorsa di sistemaa nessuna risorsa di sistema
Lo User mode può essere parte del TCB in relazione al tipo di Lo User mode può essere parte del TCB in relazione al tipo di processo e della impostazioniprocesso e della impostazioni
Il disegno di un sistema operativo deve dividere in maniera Il disegno di un sistema operativo deve dividere in maniera assoluta codice “fidato” da codice “non fidato”assoluta codice “fidato” da codice “non fidato” per definizione, kernel code è fidatoper definizione, kernel code è fidato tutto quello che scrivete è per default non fidatotutto quello che scrivete è per default non fidato
TCBKernelmód
TCBKernelmódTCBTCB
parte non fidataparte fidata senza
limiti
Utente administratorUtente administrator L’utente Administrator in Windows è L’utente Administrator in Windows è
considerato parte della TCBconsiderato parte della TCB Il suo ruolo è quello di definire il TCB e di Il suo ruolo è quello di definire il TCB e di
configurare i livelli di fiducia che il sistema configurare i livelli di fiducia che il sistema operativo deve usare per ogni accountoperativo deve usare per ogni account
Windows non può essere messo in sicurezza Windows non può essere messo in sicurezza da un administrator “distratto” da un administrator “distratto”
Principal e accountPrincipal e account Il Il Principal Principal è un’entità che può essere principalmente è un’entità che può essere principalmente
autenticata comeautenticata come:: UserUser ComputerComputer
L’account rappresenta un set di dati riguardanti un L’account rappresenta un set di dati riguardanti un principalprincipal
Un account esiste in contesti differentiUn account esiste in contesti differenti:: Local accountLocal account NetworkNetwork
La differenza sta nel tipo di authority che gestisce La differenza sta nel tipo di authority che gestisce l’accountl’account LocalLocal – – TCB e l’authorityTCB e l’authority NetworkNetwork – – Domain è l’authorityDomain è l’authority
I domini sono regni fidatiI domini sono regni fidati I domini possono contenereI domini possono contenere
UtentiUtenti ComputerComputer
Gli account di dominio si estendono sui Gli account di dominio si estendono sui computer in retecomputer in rete MyDomain\MyAccount è riconosciuto su tutti i MyDomain\MyAccount è riconosciuto su tutti i
computer che fanno parte di un certo dominiocomputer che fanno parte di un certo dominio
La fiducia tra domini estende il regnoLa fiducia tra domini estende il regno Se YourDomain si fida di MyDomain, allora Se YourDomain si fida di MyDomain, allora
YourDomain riconosce MyDomain\MyAccountYourDomain riconosce MyDomain\MyAccount
Un client in un dominio può autenticarsi su un Un client in un dominio può autenticarsi su un qualunque server che è raggiungibile da un qualunque server che è raggiungibile da un percorso di fiducia dal server verso il clientpercorso di fiducia dal server verso il client
Ogni computer è un isola Ogni computer è un isola Un account su un computer è separato da un Un account su un computer è separato da un
altro account su un computer differentealtro account su un computer differente Local account possono autenticarsi in rete se i Local account possono autenticarsi in rete se i
propri user name e password corrispondono propri user name e password corrispondono sugli altri computer (tipico nel workgroup)sugli altri computer (tipico nel workgroup)
Altrimenti in generale questi sono account Altrimenti in generale questi sono account differentidifferenti:: Computer1\User1Computer1\User1 Computer2\User1Computer2\User1 Domain\User1Domain\User1
Schema di autenticazione Schema di autenticazione
Principal AuthenticationLogon Session
DomainDomain Controller /
Backup Domain Controller
TokenSID
AuthorizationNTLM/Kerberos
.SAM
.SAM/AD
LSALsass.exe
LSALsass.exe
Cos’è un Cos’è un SID?SID? SID = Security IdentifierSID = Security Identifier Un valore univoco in tempo e in spazio che Un valore univoco in tempo e in spazio che
determina un oggetto di sicurezza del sistemadetermina un oggetto di sicurezza del sistema L’unica eccezione è il SID legato alla L’unica eccezione è il SID legato alla Logon Session Logon Session
999999 (SYSTEM) (SYSTEM)
Si basa su un identificatore di Si basa su un identificatore di 9696 bit bit creato creato quando si installa Windowsquando si installa Windows
Struttura del Struttura del SID SID èè: S-R-I-SA-SA-SA: S-R-I-SA-SA-SA [- RID] [- RID] RID (identificativo relativo), predefinito in winnt.hRID (identificativo relativo), predefinito in winnt.h
Administrátor: S-1-5-21-XXXX-XXXX-XXXX-500
Guest: S-1-5-21-XXXX-XXXX-XXXX-501
LSALSA LSA = Local Security AuthorityLSA = Local Security Authority Una struttura flessibile che fornisce il servizio Una struttura flessibile che fornisce il servizio
di autenticazionedi autenticazione Eseguito in un processo privilegiato Eseguito in un processo privilegiato lsass.exelsass.exe LSA LSA è il processo principale che lavora con i è il processo principale che lavora con i
local accounts =local accounts => può lavorare come un > può lavorare come un DC DC in in piccole retipiccole reti
.SAM
COMP1\User1 – SID1
.SAM
COMP2\User1 – SID2L
SA
LS
AL
SA
LS
A
Authomatic logon(Network Logon Session)
WINLOGON (Winlogon.exe)WINLOGON (Winlogon.exe)
GINA (Msgina.dll)GINA (Msgina.dll)
Local Security Authority (LSA)Local Security Authority (LSA)
Authentication PackageAuthentication Package
NETLOGON (Local Computer)NETLOGON (Local Computer)
NETLOGON (Domain Computer)NETLOGON (Domain Computer)
Authentication PackageAuthentication Package
Security Account ManagerSecurity Account Manager
Local userLocal userdatabasedatabase
LSA policyLSA policyddatabaseatabase
Processo di autenticazioneProcesso di autenticazioneProcesso di autenticazioneProcesso di autenticazione
Interactive LogonSession
Interactive LogonSession
TOKENTOKEN
Logon SessionLogon Session Un istanza di un principal che gira su un computerUn istanza di un principal che gira su un computer
Per ogni autenticazione locale o remota il kernel genera una Per ogni autenticazione locale o remota il kernel genera una nuova logon sessionnuova logon session
La logon session viene distrutta non appena tutti i token che La logon session viene distrutta non appena tutti i token che la referenziano vengono chiusi (reference count)la referenziano vengono chiusi (reference count)
Per gli utenti guest viene creata una logon session speciale Per gli utenti guest viene creata una logon session speciale chiamata null sessionchiamata null session
Una sessione inizia da un’autenticazione del TCBUna sessione inizia da un’autenticazione del TCB Tre eccezioni: Al boot vengono create le logon session per Tre eccezioni: Al boot vengono create le logon session per
Local System, Local Service, Network Service che quindi non Local System, Local Service, Network Service che quindi non necessitano di passwordnecessitano di password
Logon session mantiene dati importantiLogon session mantiene dati importanti Alla logoff, l'OS cerca di chiudere tutti i processi collegati alla Alla logoff, l'OS cerca di chiudere tutti i processi collegati alla
logon session associata all'utente loggatologon session associata all'utente loggato Usata per memorizzare le credenziali del client in cache Usata per memorizzare le credenziali del client in cache
(kerberos tickets…)(kerberos tickets…)
Logon sessionLogon session Non è un termine astratto, una logon session è Non è un termine astratto, una logon session è
“fisicamente” un operazione del sistema “fisicamente” un operazione del sistema operativooperativo
Logon session = Logon session = Reception in MicrosoftReception in Microsoft I visitatori ottengono il loro badge che fornisce la I visitatori ottengono il loro badge che fornisce la
loro identità e i loro dirittiloro identità e i loro diritti La LLa Logon session ogon session può essere vista dagli può essere vista dagli
sviluppatori attravero il tosviluppatori attravero il tokenken
Computer A
Honza
InteractiveLogon
Session
Computer B
Honza
NetworkLogon
Session
Computer C
Honza
NetworkLogon
Session
Tipi di Tipi di Logon SessionLogon Session
SystemLogon
Session
InteractiveLogon
Session
DeamonLogon
Session
NetworkLogon
Session
System Logon SessionSystem Logon Session Ogni computer ha una sola Ogni computer ha una sola SLSSLS Ha sempre lo stesso identificativo Ha sempre lo stesso identificativo 999 (0x3E7)999 (0x3E7) SID: S-1-5-18SID: S-1-5-18
Secondary Logon SessionsSecondary Logon Sessions Windows 2000 ha introdotto un nuovo servizioWindows 2000 ha introdotto un nuovo servizio
RunAs in Win2k, Secondary Logon in XPRunAs in Win2k, Secondary Logon in XP
Esegue un processo in una secondary logon Esegue un processo in una secondary logon sessionsession Autentica l’utente, esegue il processo nella stessa Autentica l’utente, esegue il processo nella stessa
windows session, ma in una nuova logon sessionwindows session, ma in una nuova logon session Può o non può caricare i profiliPuò o non può caricare i profili
CreateProcessWithLogonWCreateProcessWithLogonW Disponibile nel menù di contesto degli Disponibile nel menù di contesto degli
eseguibilieseguibili
RunAsRunAs
RunAsRunAs User logon (interactive logon User logon (interactive logon
session)session) UserUser’s profile’s profile RegistryRegistry
TokenToken Token è un oggetto kernel che tiene i dati di una Token è un oggetto kernel che tiene i dati di una
identityidentity:: User’sUser’s SID SID GroupGroup SID SID PrivilegiPrivilegi
Ogni processo ha il suo token che rappresenta il Ogni processo ha il suo token che rappresenta il principalprincipal
Alcuni processi vengono eseguiti come SYSTEM Alcuni processi vengono eseguiti come SYSTEM account quando il computer si avviaaccount quando il computer si avvia
Quando un utente esegue il log il processo di shell Quando un utente esegue il log il processo di shell viene eseguito in user mode sotto uno specifico viene eseguito in user mode sotto uno specifico principalprincipal WinLogon.exe (SYSTEM) WinLogon.exe (SYSTEM) inizializza la shell dell’utente con il inizializza la shell dell’utente con il
metodo metodo CreateProcessAsUserCreateProcessAsUser ==> e il token dell’utente viene > e il token dell’utente viene propagato a tutti i processi eseguitipropagato a tutti i processi eseguiti
Processi e tokenProcessi e token Ogni processo in Windows viene eseguito con Ogni processo in Windows viene eseguito con
la propria identityla propria identity Ogni processo è inizializzato con il proprio tokenOgni processo è inizializzato con il proprio token I nuovi processi ricevono una copia del token dal I nuovi processi ricevono una copia del token dal
processo originarioprocesso originario I token stabiliscono le restrizioni sul processo, i I token stabiliscono le restrizioni sul processo, i
suoi privilegi per accedere alle risorse,etc.suoi privilegi per accedere alle risorse,etc.
Dealer\Bob
winword.exe
Dealer\Bob
explorer.exe
Tokens di Processi e ThreadTokens di Processi e Thread Ogni processo viene eseguito con un tokenOgni processo viene eseguito con un token
Tipicamente lo stesso del parentTipicamente lo stesso del parent I thread di un processo possono avere un I thread di un processo possono avere un
token token Se si, il thread sta “impersonando” l’utente con il Se si, il thread sta “impersonando” l’utente con il
quale è stato creato il tokenquale è stato creato il token Se no, il thread viene eseguito con lo stesso token Se no, il thread viene eseguito con lo stesso token
del processo padredel processo padre Quando un processo è partito il token non può Quando un processo è partito il token non può
essere cambiatoessere cambiato Il token di un thread può essere cambiato in Il token di un thread può essere cambiato in
ogni momentoogni momento Può essere “converito” al token del processoPuò essere “converito” al token del processo
In questo caso il thread non ha più il suo tokenIn questo caso il thread non ha più il suo token
TokensTokens
Process Explorer for Windows Process Explorer for Windows 9x/NT/2000/XP/S2K39x/NT/2000/XP/S2K3
www.sysinternals.comwww.sysinternals.com
PrivilegiPrivilegi Un meccanismo che permette di eseguire il Un meccanismo che permette di eseguire il
tuning delle policy di sicurezzatuning delle policy di sicurezza es., Invece di configurare ogni file per essere es., Invece di configurare ogni file per essere
gestito dal backup operators group è sufficiente gestito dal backup operators group è sufficiente assegnare al gruppo i privilegi di backupassegnare al gruppo i privilegi di backup
Alcuni privilegi interessanti:Alcuni privilegi interessanti: Backup, restoreBackup, restore Shutdown del sistema, cambio del clock di sistemaShutdown del sistema, cambio del clock di sistema Debug di un programmaDebug di un programma Eseguire come parte del sistema operativo (TCB)Eseguire come parte del sistema operativo (TCB)
Una volta concesso, il privilegio diventa parte Una volta concesso, il privilegio diventa parte del token dell’utentedel token dell’utente Ma può essere abilitato o disabilitatoMa può essere abilitato o disabilitato
Il token nei processi e nei Il token nei processi e nei threadthread Il token del thread èIl token del thread è
Usato per controllare l’accesso agli oggetti del Usato per controllare l’accesso agli oggetti del kernelkernel
Usato come identità di rete in molti casiUsato come identità di rete in molti casi SQL Server integrated securitySQL Server integrated security Named pipes, etcNamed pipes, etc
Il token di processo èIl token di processo è Copiato in un nuovo processo per defaultCopiato in un nuovo processo per default Usato per chiamate DCOM in uscita per defaultUsato per chiamate DCOM in uscita per default L’unico vero contesto di sicurezza sempre L’unico vero contesto di sicurezza sempre
disponibiledisponibile Potrebbe non esserci un token di threadPotrebbe non esserci un token di thread
Impersonation e delegationImpersonation e delegation Un nuovo token di security viene assegnato al thread Un nuovo token di security viene assegnato al thread
(tipicamente quello dell'utente autenticato).(tipicamente quello dell'utente autenticato).Il token di processo rimane invariato.Il token di processo rimane invariato.
L'API RevertToSelf elimina il token del thread annullando L'API RevertToSelf elimina il token del thread annullando l'impersonazione.l'impersonazione.
Kerberos non consente la propagazione del token di thread. Kerberos non consente la propagazione del token di thread. Questo significa che il processo che impersona può usare quel Questo significa che il processo che impersona può usare quel token solo sul PC locale e non in retetoken solo sul PC locale e non in rete
La soluzione (sbagliata) è delegation che è disabilitata by-defaultLa soluzione (sbagliata) è delegation che è disabilitata by-default
La soluzione migliore è il cambio di architettura, ma spesso non è la La soluzione migliore è il cambio di architettura, ma spesso non è la scelta più semplicescelta più semplice
Nella vita reale impersonation è la delegaNella vita reale impersonation è la delegaNella vita reale delegation è la procuraNella vita reale delegation è la procura
Delegation (default disabilitata)Delegation (default disabilitata)
Delegation per localsystemDelegation per localsystem Delegation per un utenteDelegation per un utente
Utenti che hanno il privilegio di impostare delegation (default = administrators)Utenti che hanno il privilegio di impostare delegation (default = administrators)
Dove siamo?Dove siamo?Il modello di sicurezza classicoIl modello di sicurezza classico
Autenticazione utentiAutenticazione utenti Applicazioni girano usando un account utente (token)Applicazioni girano usando un account utente (token) Utenti e Gruppi possono essere organizzati in gruppiUtenti e Gruppi possono essere organizzati in gruppi Ai gruppi o agli utentiAi gruppi o agli utenti possono essere assegnati o tolti possono essere assegnati o tolti
permessi per accedere a risorse (NTFS, rete, device, etc.)permessi per accedere a risorse (NTFS, rete, device, etc.)
Per il codicePer il codice (Activex, VBA, ...) il sistema è quello di: (Activex, VBA, ...) il sistema è quello di: firmare con un certificato X509firmare con un certificato X509
fidandosi ciecamente delfidandosi ciecamente delprogrammatore che l'ha firmatoprogrammatore che l'ha firmato
chiedere all'utente finale la confermachiedere all'utente finale la conferma
... risultato = disastro... risultato = disastro
Il modello della CAS nel Framework.NETIl modello della CAS nel Framework.NETCAS = Code Access SecurityCAS = Code Access Security
IE può ospitare all'interno della pagina HTML dei controlli IE può ospitare all'interno della pagina HTML dei controlli WinformWinform. . La CAS può far girare questi controlli La CAS può far girare questi controlli senza alcuna richiesta senza alcuna richiesta all'utenteall'utente
La stessa cosa vale per intere applicazioni o solo assembly La stessa cosa vale per intere applicazioni o solo assembly scaricati da internetscaricati da internet
La CAS è fondamentale per La CAS è fondamentale per chi scrive controllichi scrive controlli ("Least ("Least Privilege Model")Privilege Model")
La La CASCAS dà agli dà agli admin admin un potere che mai hanno avuto primaun potere che mai hanno avuto prima LimitaLimita ciò che può essere eseguito nel codice ciò che può essere eseguito nel codice ProteggeProtegge il PC da codice di provenienza incerta il PC da codice di provenienza incerta
(spyware, adware, malaware, virus, worm, ...)(spyware, adware, malaware, virus, worm, ...) ImpedisceImpedisce selettivamente che del codice possa accedere a selettivamente che del codice possa accedere a
certe funzionalità dell'OScerte funzionalità dell'OS
CAS: a cosa CAS: a cosa nonnon serve serve
Non è un sistema di protezione del Non è un sistema di protezione del software contro gli hackersoftware contro gli hacker
Non è un sistema che autorizza l'uso del Non è un sistema che autorizza l'uso del software sotto licenzasoftware sotto licenza
Protegge l'utente che usa il software solo Protegge l'utente che usa il software solo se vuole essere protetto (admin può se vuole essere protetto (admin può disabilitare la CAS ...)disabilitare la CAS ...)
Questione di punti di vista ...Questione di punti di vista ...
Risorsa
ACL
Token
UserEsecuzione
Permission
Evidence
Codice
Autenticazione
Autorizzazione
Autenticazione
Autorizzazione
CAS
NT
La difficoltà sta nel... glossarioLa difficoltà sta nel... glossario EvidenceEvidence Prove di protezioneProve di protezione Strong nameStrong name Nome sicuroNome sicuro Code GroupCode Group Gruppi di codiceGruppi di codice Full trustFull trust Attendibilità totaleAttendibilità totale Partial trustPartial trust Attendibilità parzialeAttendibilità parziale Security PolicySecurity Policy ...... PermissionPermission AutorizzazioniAutorizzazioni Permission SetPermission Set Set di autorizzazioniSet di autorizzazioni Stack WalkStack Walk ...... AssertAssert ...... DemandDemand ...... ...... ......
Configurazione della CASConfigurazione della CAS Si esegue tramite CasPol (command line)Si esegue tramite CasPol (command line)
oppure tramite il Framework Configuration Tooloppure tramite il Framework Configuration Tool
Permission: "cosa vuoi fare?" Permission: "cosa vuoi fare?" (autorizzazione)(autorizzazione)
I permessi sono le autorizzazioni ad eseguire I permessi sono le autorizzazioni ad eseguire una certa operazioneuna certa operazione
Il framework ne predefinisce un certo numeroIl framework ne predefinisce un certo numero I permessi definiti nella CAS sono I permessi definiti nella CAS sono trasversalitrasversali a a
quelli più noti come NTFS, SQL, etc.quelli più noti come NTFS, SQL, etc. Per ciascun permesso è possibile definire dei Per ciascun permesso è possibile definire dei
valori molto dettagliativalori molto dettagliati
È possibile costruire dagli admin tool o È possibile costruire dagli admin tool o programmaticamente un gruppo diprogrammaticamente un gruppo dipermessi chiamato permessi chiamato Permission SetPermission Set
Evidence: "chi sei?" Evidence: "chi sei?" (autenticazione)(autenticazione)
Evidence è la prova oggettivaEvidence è la prova oggettiva per sapere per sapere di chi èdi chi è o o da dove da dove provieneproviene il codice managed il codice managed
La CAS può identificare un assembly basandosi su:La CAS può identificare un assembly basandosi su: Cartella dove risiedeCartella dove risiede Sito o Url da cui viene scaricatoSito o Url da cui viene scaricato Zona in cui si trovaZona in cui si trova Strong Name presente nel suo manifestStrong Name presente nel suo manifest Hash dell'assemblyHash dell'assembly Firma digitale (Authenticode, stessa degli Activex)Firma digitale (Authenticode, stessa degli Activex)
Al caricamento dell'assembly in memoria, viene subito Al caricamento dell'assembly in memoria, viene subito ricavata l'evidencericavata l'evidence
È possibile da codice associare una evidence ad un È possibile da codice associare una evidence ad un AppDomain in modo da isolare degli assemblyAppDomain in modo da isolare degli assembly
Code GroupCode Groupe Security Policye Security Policy I Code Group sono l'associazione di un evidence con un insieme I Code Group sono l'associazione di un evidence con un insieme
di permessidi permessi Una Security Policy è una collection di Code GroupUna Security Policy è una collection di Code Group
Evidence Permission Set
Al runtime viene fatto il calcolo dei Al runtime viene fatto il calcolo dei permessi effettivipermessi effettivi
1.1.
2.2.
Unione
Intersezione
void SetAppDomainPolicy(PolicyLevel domainPolicy);
MA ...MA ... in configurazioni complesse non sempre in configurazioni complesse non sempre
l'unione è esaustiva di quello che vorremmol'unione è esaustiva di quello che vorremmo
Level Final
Exclusive
Come gestire la CAS da codice?Come gestire la CAS da codice? Lo strumento principale sono:Lo strumento principale sono:
le classi xxxPermission e relativi attributi le classi xxxPermission e relativi attributi Queste classi permettono di chiedere alla CAS di:Queste classi permettono di chiedere alla CAS di:
eseguire controlli e (se necessario) lanciare la SecurityExceptioneseguire controlli e (se necessario) lanciare la SecurityException
ISecurityEncodableISecurityEncodable
IStackWalkIStackWalk
IPermissionIPermission
FileIOPermissionFileIOPermission UIPermissionUIPermission EnvironmentPermssionEnvironmentPermssion
PermissionSetPermissionSet
FileIOPermissionAttribute
FileIOPermissionAttribute
UIPermissionAttribute
UIPermissionAttribute
EnvironmentPermssionAttribute
EnvironmentPermssionAttribute
CodeAccessPermissionAttribute
CodeAccessPermissionAttribute
CodeAccessPermissionCodeAccessPermission
Stack WalkStack Walk La CAS effettua uno 'stack walk' per verificare La CAS effettua uno 'stack walk' per verificare
che i chiamanti abbiano i permessi di eseguire che i chiamanti abbiano i permessi di eseguire una determinata operazione (file I/O, socket, ...)una determinata operazione (file I/O, socket, ...)
SecurityException
OK
Demand
Stack walk
Metodo1
Metodo2
Metodo3
Metodo4
permissionnegata
Stack walk
// Richiesta imperativa ...
FileIOPermission perm = new FileIOPermission(FileIOPermissionAccess.AllAccess, @"c:\");
perm.Demand();
// Richiesta imperativa ...
FileIOPermission perm = new FileIOPermission(FileIOPermissionAccess.AllAccess, @"c:\");
perm.Demand();
// ... oppure dichiarativa (sull'assembly)
[assembly:FileIOPermission(SecurityAction.Demand, All = @"C:\") ]
// ... oppure dichiarativa (sull'assembly)
[assembly:FileIOPermission(SecurityAction.Demand, All = @"C:\") ]
Strong NameStrong Name
Lo strong name dovrebbe essere "aziendale" e ben Lo strong name dovrebbe essere "aziendale" e ben custoditocustodito
Esegue una sorta di "firma" sull'assemblyEsegue una sorta di "firma" sull'assembly Le specifiche ECMA raccomandano l'uso dello strong Le specifiche ECMA raccomandano l'uso dello strong
name name solo per il versioningsolo per il versioning e e MAI per sicurezzaMAI per sicurezza Esistono sistemi per ingannare il CLR e far caricare un Esistono sistemi per ingannare il CLR e far caricare un
Assembly tampered anche se firmato con strong name.Assembly tampered anche se firmato con strong name.
La registrazione in GAC richiede lo strong nameLa registrazione in GAC richiede lo strong name Se un assembly partially trusted chiama un full trusted Se un assembly partially trusted chiama un full trusted
con strong name, questo necessita dell'attributo:con strong name, questo necessita dell'attributo:[assembly:AllowPartiallyTrustedCallers][assembly:AllowPartiallyTrustedCallers]
Tool:Tool:Exporting and deployingExporting and deployingSecurity PolicySecurity Policy
File.MSI
Create
Deploy
ToolToolAdjusting SecurityAdjusting Security
Tool:Tool:Evaluating an assemblyEvaluating an assembly
Tool:Tool:Trusting an assemblyTrusting an assembly
AuditingAuditing Auditing di Windows permette agli eventi di Auditing di Windows permette agli eventi di
audit di apparire dentro il Security Event Log. audit di apparire dentro il Security Event Log. Vi avverte su potenziali problemi di sicurezzaVi avverte su potenziali problemi di sicurezza Potete fare audit di:Potete fare audit di:
Log on/Log off: Log on/Log off: Accesso a file: Accesso a file: Gestione utenti e gruppi: Gestione utenti e gruppi:
Creazione, cambiamento o cancellazione di utenti o gruppiCreazione, cambiamento o cancellazione di utenti o gruppi Security Policy Changes: Security Policy Changes:
Ogni modifica sui diritti degli utenti o sul cambiamento di Ogni modifica sui diritti degli utenti o sul cambiamento di policy.policy.
Restart, Shutdown, e System Process Tracking: Restart, Shutdown, e System Process Tracking: Monitorizza l’attivazione dei programmi, la duplicazione degli Monitorizza l’attivazione dei programmi, la duplicazione degli
handle, accesso indiretto agli oggetti e terminazione dei handle, accesso indiretto agli oggetti e terminazione dei processi.processi.
AuditingAuditing
AuditingAuditing Per abilitare l’auditing, devete avere una logon Per abilitare l’auditing, devete avere una logon
session come membro del gruppo session come membro del gruppo Administrators group (Domain Admins sono Administrators group (Domain Admins sono membri). membri).
AuditingAuditing Quando fate auditing, potete avere:Quando fate auditing, potete avere: Success: Un successo indica che l’utente ha Success: Un successo indica che l’utente ha
ottenuto correttamente l’accesso alla risorse.ottenuto correttamente l’accesso alla risorse. Failure: Un fallimento indica che l’utente ha Failure: Un fallimento indica che l’utente ha
tentato di accedere ad una risorsa per la quale tentato di accedere ad una risorsa per la quale non ha sufficienti permessi.non ha sufficienti permessi.
Esempio – Cosa significa avere una serie di Esempio – Cosa significa avere una serie di fallimenti e poi un successo ? Cosa ha fatto fallimenti e poi un successo ? Cosa ha fatto l’amministratore della macchina per interferire l’amministratore della macchina per interferire con tale processo ?con tale processo ?
Domande?Domande?
© 2004 Microsoft Corporation. All rights reserved.Some parts of this presentation are copyrighted by Skilldrive.comThis presentation is for informational purposes only. MICROSOFT MAKES NO WARRANTIES, EXPRESS OR IMPLIED, IN THIS SUMMARY.
top related