1 / 68

La riduzione dei privilegi in Windows

La riduzione dei privilegi in Windows. Marco Russo DevLeap http://blogs.devleap.com/marco marco@devleap.it. Agenda. Cosa è un utente con privilegi minimi Perché è giusto farlo Vivere senza essere amministratori Prepararsi al grande salto Gli strumenti

oded
Télécharger la présentation

La riduzione dei privilegi in Windows

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. La riduzione dei privilegi in Windows Marco Russo DevLeap http://blogs.devleap.com/marco marco@devleap.it

  2. Agenda • Cosa è un utente con privilegi minimi • Perché è giusto farlo • Vivere senza essere amministratori • Prepararsi al grande salto • Gli strumenti • Sviluppare senza essere amministratori • Novità in Windows Vista • Regole di scrittura (riferimenti)

  3. Utente con privilegi minimi • La maggior parte degli utenti usa un account di amministratore locale della macchina • Qualsiasi operazione è consentita • Comodo per installare software e accedere a tutte le configurazioni del sistema operativo • Rischio latente: eseguire del codice che, volontariamente o no, abusa di questo privilegio • Utente “normale” • Si dice “con privilegi minimi” perché non può installare nuove applicazioni e accedere a molte componenti critiche del sistema • È un meccanismo di difesa, anche dai propri errori prima che da attacchi esterni e/o codice maligno

  4. Chi deve usare un utente amministratore? • Nessuno, nella pratica quotidiana • Soprattutto non per navigare su Internet e leggere mail • Ma io sono un sistemista! • Bene, quindi hai già due utenti, uno amministrativo per le operazioni amministrative e uno personale per tutto il resto. Vero? Bravo! • Ma io sono un programmatore! • Beh, se scrivi software su un computer attaccato a una rete e magari anche a Internet, sei pur sempre un utente come molti altri • Ma soprattutto, le applicazioni che scrivete sono utilizzabili da un utente normale? Come le provate con un utente amministratore?

  5. Perché è giusto farlo Perché è giusto avere un utente non amministratore

  6. I rischi PARZ. = Vulnerabilità parziale

  7. Privilegi minimi • Run with Least Privilege • Significa eseguire con il minimo dei privilegi • Si applica ad applicazioni Web e Windows • LPA: Least Privileged Account • Utente con privilegi minimi • Si applica a un utente che non è amministratore • In Windows, un utente che appartiene al gruppo Users di default

  8. Perché è giusto farlo • Un’applicazione andrebbe eseguita con il minimo dei privilegi necessari • Limita i danni in caso di errore o attacco • Sicurezza, insomma... • Un’applicazione dovrebbe essere eseguibile con il minimo dei privilegi necessari • Il programmatore deve pensarci • Non tutti i programmatori lo fanno • È un motivo per cui i sistemisti odiano i programmatori

  9. Perché è giusto farlo • I vantaggi: • Conseguenze di eventuali virus: limitate • Riduce superficie di attacco • No spyware • Difficile che si installino, non hanno diritti sufficienti • Esperimento: • Un anno di navigazione con un PC senza antivirus, senza anti-spyware e senza firewall • Ma tutti gli aggiornamenti installati tempestivamente • Dopo un anno: nessun virus, nessuno spyware • Attenzione: non è una garanzia, ma aiuta al 95% • Si resta sempre e comunque esposti a vulnerabilità 0day • Utente consapevole, non può essere considerato un utente medio

  10. Vivere senza essere amministratori

  11. L’esperienza da utente • Create un logon associato al gruppo Users • No Administrators • No Power Users • Al logon scoprirete che: • Non potete installare nuove applicazioni • Non potete installare plug-in e ActiveX su Internet Explorer • Non potete aggiornare le applicazioni esistenti • Alcune applicazioni già installate non si possono più avviare o presentano dei problemi di funzionamento

  12. Cos’è che non va? • Perché le applicazioni smettono di funzionare: • 60% - Accesso a file/directory non autorizzato • 39% - Accesso a Registry non autorizzato • <1% - Mancanza di privilegi sufficienti • Soluzioni • Scrivere meglio il codice… Ma non sempre si può • Individuare i problemi e aumentare gli accessi al minimo indispensabile (su file e registry) Su file e registry, work around fino a nuova versione • Aumentare i diritti dell’utente Non è una soluzione, è un tornare al problema

  13. Guida alla sopravvivenza • Il 99% dei problemi è causato da accessi non autorizzati al File System e al Registry • Due tool indispensabili per la diagnosi: • FileMon • RegMon • Entrambi su www.sysinternals.com

  14. Problemi di File System • Directory leggibili da Everyone e modificabili solo da amministratori e power users: • C:\ • C:\WINDOWS • C:\WINDOWS\SYSTEM32 • C:\PROGRAM FILES • Spesso i programmi aprono in scrittura file in queste directory • Anche se poi fanno solo operazioni di lettura • Comunque è un errore scrivere in queste directory, ogni utente dovrebbe avere configurazioni separate

  15. Problemi di Registry • Hive leggibili da Everyone e modificabili solo da amministratori • HKEY_LOCAL_MACHINE • Spesso i programmi aprono in scrittura queste chiavi di registry • Anche se poi fanno solo operazioni di lettura • Comunque è un errore scrivere in questa parte di registry, ogni utente dovrebbe avere configurazioni separate e usare HKEY_CURRENT_USER

  16. Accessi a File e Registry Windows Explorer RegEdit

  17. Perché tutti questi problemi • Molti in buona fede • Windows 9x non ha ACL (Access Control List) • Tutti gli utenti possono fare tutto (o quasi) su disco e registry • Le applicazioni sviluppate su Windows 9x funzionano su Windows 2000/XP/2003, ma ignorano l’aspetto della security • Altre applicazioni non sono state mai testate da utenti non amministratori…

  18. Preparazione al grande salto

  19. La vita dura dell’utente • Si può e si deve sviluppare con un utente non amministratore • È l’unico modo per capire subito cosa succede ai programmi sviluppati • È anche una questione psicologica: vivere sulla propria pelle certe esperienze fa aumentare la sensibilità al problema • È un modo più sicuro di usare un PC • Indipendentemente da firewall e antivirus

  20. Come fare il grande salto • Caratteristiche dell’utente: • No gruppo Administrators • No gruppo Power Users • Sì gruppo Users • Per uno sviluppatore • Creare un gruppo “Developer” o “Advanced User” • Si definiranno le permission sul gruppo e non sull’utente • In caso di nuovi utenti sviluppatori sarà facile abilitarli • Associare l’utente a tale gruppo

  21. Come fare il grande salto • Tre strade: • Cambiare il proprio utente (amministratore locale della macchina) in un utente “normale” • Problema: ciò che è già installato resta accessibile all’utente solo perché è owner di registry e directory • Si rischia di non percepire alcuni problemi • Creare un nuovo utente • Strada consigliabile • Si perdono i profili • Reinstallare tutto • Si perdono i profili • Si evitano “eredità” del passato • Ci vuole un sacco di tempo!!

  22. Prepararsi psicologicamente • Perché questo avvertimento? • Tanti programmi e tante operazioni non funzioneranno più come prima! • I primi due giorni sono i più duri • Ci saranno delle crisi… • Resistete! Potete farcela! • Dopo una settimana: • Vi sentirete meglio di prima • Avvertirete un maggiore controllo sulla macchina • Vi chiederete come avete fatto prima

  23. Gli strumenti

  24. RunAs • Il primo strumento da usare è RunAs • Consente di avviare un programma con le credenziali di un altro utente • Richiede un logon a ogni esecuzione • Si può fare uno script con le password in chiaro ma… bye bye security! • Va usato solo per le applicazioni che necessitano realmente di un amministratore: • Configurazione di sistema • Console amministrative • FileMon, RegMon, ProcessExplorer

  25. RunAsAdmin • Utility free • http://sourceforge.net/projects/runasadmin/ • Consente di fare logon come amministratore ma usando dei privilegi ridotti • Utile per usare utenti Amministratori in maniera più sicura • Si può fare il RunAs dei programmi scegliendo come modificare il token da associare al processo

  26. PrivBar • Utility free • http://www.speakeasy.org/~aaronmar/NonAdmin/PrivBar.zip • Visualizza il livello di privilegio con cui sono eseguiti Explorer e Internet Explorer

  27. RunAs, RunAsAdmine PrivBar RunAs su Explorer RunAs da Command Prompt RunAsAdmin PrivBar

  28. Riparare le applicazioni scritte male • Individuare Registry e Directory di cui modificare le ACL • Usare RegMon e FileMon • Di solito si trova un Access Denied poco prima dell’interruzione del programma • Abbassare al minimo indispensabile i diritti delle ACL • Solo sulla directory interessata • Meglio (quando possibile) solo sul file interessato • Usare gruppo “Developer”/“Advanced User” piuttosto che il singolo utente

  29. FileMon • Utility free • http://www.sysinternals.com/Utilities/Filemon.html • Monitor degli accessi al file system • Intercetta tutte le chiamate di I/O • Può rallentare le operazioni, in particolare se nella finestra si visualizza tutto senza filtri • Utile anche per analizzare il responsabile di eccessive operazioni di I/O

  30. RegMon • Utility free • http://www.sysinternals.com/Utilities/Regmon.html • Monitor degli accessi al registry • Intercetta tutte le chiamate alle API del Registry • Può rallentare le operazioni, in particolare se nella finestra si visualizza tutto senza filtri • Utile anche per analizzare dove risiede la configurazione di un programma • Talvolta non è dove dovrebbe essere • Es. configurazione per utente in HKLM\Software

  31. Uso di FileMon e RegMon • Filtrare le operazioni ACCESS DENIED • Errore che dipende da insufficienza di privilegi • Identificazione del problema e possibili soluzioni: • Garantire l’accesso da un utente normale a file/directory interessate • Workaround temporaneo se non è una propria applicazione • Segnalare il bug e installare poi una versione corretta • Modificare il codice di accesso alla risorsa • Se è un proprio programma – durante il debug questi problemi emergono quasi completamente se non si è amministratori

  32. Riparare applicazioniscritte male… FileMon RegMon

  33. Application Compatibility Toolkit • Alcune funzionalità di ACT consentono di bypassare alcuni dei problemi più frequenti • LUA shim • Crea file system e registry virtuale in modo analogo a quanto fa Vista • Richiede .NET 1.1 e SQL Server 2000 (o MSDE)

  34. Sviluppare senza essere amministratori Indicazioni specifiche per i programmatori

  35. Setup di Visual Studio .NET 2003 • Visual Studio .NET 2003 crea alcuni gruppi a cui uno sviluppatore deve appartenere: • VS Developers • Debugger Users • Inserire a mano gli utenti sviluppatori in questi gruppi • Alcune attività restano agli amministratori: • Registrazione di componenti COM (regsvr32/regasm) • Installazione di assembly nella GAC (gacutil) • Installazione di componenti .NET nel catalogo COM+ (regsvcs)

  36. Setup di Visual Studio 2005 • Visual Studio 2005 usa solo un gruppo speciale: • Debugger Users • Inserire a mano gli utenti sviluppatori in tale gruppo • Alcune attività restano agli amministratori (come in VS.NET 2003): • Registrazione di componenti COM (regsvr32/regasm) • Installazione di assembly nella GAC (gacutil) • Installazione di componenti .NET nel catalogo COM+ (regsvcs)

  37. Problemi di debug • Gruppo Debugger Users • A questo gruppo è assegnato il privilegio SeDebugPrivilege • Un virus potrebbe sfruttare questo privilegio per alcuni attacchi ai processi in esecuzione • Per le applicazioni .NET (managed) il debug al processo di un altro utente richiede utente admin • Non è così per applicazioni Unmanaged • Problemi per chi sviluppa servizi o siti web • Workaround: in debug eseguire il servizio/sito web con lo stesso utente con cui si fa il debug • Se debug remoto: richiesto privilegio SeDebugPrivilege anche su macchina remota

  38. Debug ASP.NET • Due aspetti • L’utente con cui gira l’applicazione • Usare lo stesso utente con cui si sviluppa per fare debug • I diritti sulle directory usate da ASP.NET • Abilitare i diritti su tali directory all’utente con cui gira l’applicazione ASP.NET • Windows 2000/XP: • L’utente associato a ASPNET_WP.EXE è uno solo per tutta la macchina • Workaround: eseguire VS.NET con RunAs _solo_ limitatamente alla fase di debug • Windows 2003: • Gli application pool di II6 aiutano nella gestione di diverse applicazioni con credenziali differenti • Visual Studio 2005: • Si può usare “Visual Web Developer Web Server”.

  39. Modifica utente ASP.NET • IIS 5 (fino a Windows XP) • Modificare tag processModel del file web.config <processModel enable="true" userName="DOMAIN\username" password="pwd" / > • Usare ASPNET_SETREG per cifrare la password senza lasciarla in chiaro (KB 329290) • IIS 6 (Windows 2003) • Creare un Application Pool • Assegnare utente sviluppatore all’application pool • Assegnare utente sviluppatore a gruppo IIS_WPG • Altrimenti non funziona con ASP.NET • Assegnare la Virtual Directory all’Application Pool

  40. VB6 • Brutte notizie • Non è pensato per essere utilizzato da utenti non amministratori • Si può ovviare con le tecniche descritte prima • Usare FileMon e RegMon • Individuare punti in cui modificare le ACL • Molti problemi causati da componenti (ActiveX) di terze parti • Anche qua si può ovviare con modifica di ACL • Problema: è un lavoro immane e si rischia di tornare al punto di partenza (bassa security)

  41. Novità in Windows Vista

  42. Aumento della protezione in Windows Vista • Servizi eseguiti con Least-Privileged Account • Driver in modalità utente se non richiedono funzioni disponibili solo nel kernel • Gestione diretta I/O, interrupt, accesso hardware, istruzioni privilegiate della CPU • Un driver per un dispositivo collegato su USB non ne ha bisogno • User Account Control • Gestione automatizzata del RunAs per tutti gli utenti

  43. User Admin System Services Kernel Windows XP • Pochi layer • La maggior parte con alti privilegi • Controllo limitato tra I layer

  44. Vista User Account Control (LUA) Service Hardening Low rights programs LUA User Low Privilege Services Admin • Maggior numero di layer • Servizi ripartiti • Ridotta la dimensione di layer ad alto rischio System Services Svc 6 Service 1 Kernel D D D D Service 2 D D Service 3 Svc 7 User mode drivers D D D

  45. Service hardening • Esecuzione con privilegi minimi (Least-privilege Account) • Riduce al minimo accesso a risorse • Riduce il potenziale danno e il numero di vulnerabilità critiche nei servizi • Estende il modello di sicurezza esistente e fornisce opzioni diverse in base alle caratteristiche del servizio

  46. Cambiamenti ai servizi di VistaServizi comuni alle due piattaforme

  47. User Account Control (UAC) • Nome precedente: “LUA” • Utenti fanno logon come non-admin per default • Interfaccia utente per elevare privilegi ad amministratore per operazioni specifiche • Applicazioni e tool amministrativi devono essere “UAC area” • Differenziare le funzionalità disponibili in base ai privilegi dell’utente • Applicare controlli di sicurezza corretti alle funzionalità del prodotto

  48. Approccio UAC • Migliorare la produttività garantendo le permission solo quando necessario • Consente a utenti standard di eseguire funzionalità chiave senza impattare sulle impostazioni globali • Aiuta a isolare i file di sistema e i dati da codice maligno o errato • Limita i danni potenziali ai dati personali usando Protected Mode IE • Tutte le applicazioni sono eseguite come utente standard se non sono configurate diversamente • Isolamento a livello di processo di applicazioni amministrative e ad alto rischio

  49. Windows Vista UAC Goals • Tutti gli utenti sono Standard User per default • Token filtrato creato durante il logon • Solo applicazioni marcate appositamente ricevono il token non filtrato • Amministratori usano i privilegi completi solo per operazioni e applicazioni amministrative • L’utente fornisce un consenso esplicito prima di usare privilegi elevati • Alta compatibilità delle applicazioni • Redirezione dei dati • Consente a vecchie applicazioni di essere eseguite come utente standard • Le impostazioni scritte su chiavi riservate del registry sono salvate in un’immagine virtuale del Registry, visibile solo dal programma che le ha effettuate • Rilevamento procedure installazione

  50. Change Time Zone • Run IT Approved Applications • Install Fonts • Install Printers • Run MSN Messenger • Etc. Abby User Process Change Time Standard User Privilege Admin Privilege Admin Privilege Admin Privilege Admin Process Configure IIS Admin Process Install Application Admin Process UAC Architecture Standard User Rights Administrative Rights Standard User Mode Admin logon Admin Privileges Split Token Admin Token “Standard User” Token Token

More Related