"non-admin" developing

40

Upload: lavey

Post on 13-Jan-2016

43 views

Category:

Documents


0 download

DESCRIPTION

"Non-Admin" Developing. Fabio Santini .NET Senior Developer Evangelist [email protected] Microsoft Italy. Agenda. Perché è giusto farlo Vivere senza essere amministratori Regole di scrittura Sviluppare senza essere amministratori. Perché è giusto farlo. - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: "Non-Admin" Developing
Page 2: "Non-Admin" Developing

"Non-Admin" Developing "Non-Admin" Developing

Fabio SantiniFabio Santini.NET Senior Developer Evangelist.NET Senior Developer [email protected] [email protected] Microsoft ItalyMicrosoft Italy

Page 3: "Non-Admin" Developing

AgendaAgenda

Perché è giusto farloPerché è giusto farlo Vivere senza essere amministratoriVivere senza essere amministratori Regole di scritturaRegole di scrittura Sviluppare senza essere Sviluppare senza essere

amministratoriamministratori

Page 4: "Non-Admin" Developing

Perché è giusto farloPerché è giusto farlo

Perché è giusto creare e Perché è giusto creare e sviluppare applicazioni senza sviluppare applicazioni senza essere amministratoriessere amministratori

Perchè lavorando come Perchè lavorando come amministratori siamo esposti a amministratori siamo esposti a rischirischi

Page 5: "Non-Admin" Developing

DEMODEMOCosa fare per testare un Cosa fare per testare un

programma del quale non programma del quale non si conosce la provenienza si conosce la provenienza

essendo utenti essendo utenti amministratori del proprio amministratori del proprio

computer ?computer ?

Page 6: "Non-Admin" Developing

I rischiI rischiAzioneAzione AdminAdmin UserUserProgramma in run automaticoProgramma in run automatico SISI PARZ.PARZ.Installazione e avviamento Installazione e avviamento serviziservizi

SISI NONO

Connessione a server di reteConnessione a server di rete SISI SISIInstallazione keyloggerInstallazione keylogger SISI NONOInvio dati su porte TCP/IPInvio dati su porte TCP/IP SISI SISIInstallazione driverInstallazione driver SISI NONOAnalisi traffico di rete Analisi traffico di rete (sniffing)(sniffing)

SISI NONO

Controllo remoto PCControllo remoto PC SISI PARZ.PARZ.

PARZ. = Vulnerabilità parzialePARZ. = Vulnerabilità parziale

Page 7: "Non-Admin" Developing

Privilegi minimiPrivilegi minimi

Run with Least PrivilegeRun with Least Privilege Significa eseguire con il minimo dei Significa eseguire con il minimo dei

privilegiprivilegi Si applica ad applicazioni Web e WindowsSi applica ad applicazioni Web e Windows

LPA: Least Privilege AccountLPA: Least Privilege Account Utente con privilegi minimiUtente con privilegi minimi Si applica a un utente che non è Si applica a un utente che non è

amministratoreamministratore In Windows, un utente che appartiene al In Windows, un utente che appartiene al

gruppo Users di defaultgruppo Users di default

Page 8: "Non-Admin" Developing

Perché è giusto farloPerché è giusto farlo Un’applicazione Un’applicazione andrebbeandrebbe eseguita con eseguita con

il minimo dei privilegi necessariil minimo dei privilegi necessari Limita i danni in caso di errore o attaccoLimita i danni in caso di errore o attacco Sicurezza, insomma...Sicurezza, insomma...

Un’applicazione Un’applicazione dovrebbedovrebbe essere essere eseguibile con il minimo dei privilegi eseguibile con il minimo dei privilegi necessarinecessari Il programmatore deve pensarciIl programmatore deve pensarci Non tutti i programmatori lo fannoNon tutti i programmatori lo fanno Ecco uno dei motivi per cui i sistemisti ci Ecco uno dei motivi per cui i sistemisti ci

odianoodiano

Page 9: "Non-Admin" Developing

La vostra esperienzaLa vostra esperienza Avete mai provato a usare un PC con un Avete mai provato a usare un PC con un

utente non amministratore?utente non amministratore? Se siete sviluppatori, probabilmente no…Se siete sviluppatori, probabilmente no… Ma io scrivo codice, Ma io scrivo codice, ho bisognoho bisogno di essere admin!! di essere admin!! Windows non facilita le cose ....Windows non facilita le cose ....

I vostri programmi sono utilizzabili da LPA?I vostri programmi sono utilizzabili da LPA? Se non li avete mai provati così, probabilmente noSe non li avete mai provati così, probabilmente no

Cosa bisogna fare per scrivere un Cosa bisogna fare per scrivere un programma usabile da LPA?programma usabile da LPA? Prima di tutto, capire l’esperienza che può Prima di tutto, capire l’esperienza che può

provare l’utente…provare l’utente…

Page 10: "Non-Admin" Developing

Vivere senza essere Vivere senza essere amministratoriamministratori

Page 11: "Non-Admin" Developing

L’esperienza da utenteL’esperienza da utente Create un logon associato al gruppo Create un logon associato al gruppo

UsersUsers No AdministratorsNo Administrators No Power UsersNo Power Users

Al logon scoprirete che:Al logon scoprirete che: Non potete installare nuove applicazioniNon potete installare nuove applicazioni Non potete installare plug-in e ActiveX su Non potete installare plug-in e ActiveX su

Internet ExplorerInternet Explorer Non potete aggiornare le applicazioni Non potete aggiornare le applicazioni

esistentiesistenti Alcune applicazioni già installate non si Alcune applicazioni già installate non si

possono più avviare o presentano dei possono più avviare o presentano dei problemi di funzionamentoproblemi di funzionamento

Page 12: "Non-Admin" Developing

Cos’è che non va?Cos’è che non va? Perché le applicazioni smettono di Perché le applicazioni smettono di

funzionare:funzionare: 60% - Accesso a file/directory non autorizzato60% - Accesso a file/directory non autorizzato 39% - Accesso a Registry non autorizzato39% - Accesso a Registry non autorizzato <1% - Mancanza di privilegi sufficienti<1% - Mancanza di privilegi sufficienti

SoluzioniSoluzioni1.1. Scrivere meglio il codice…Scrivere meglio il codice…

Ma non sempre si puòMa non sempre si può

2.2. Individuare i problemi e aumentare gli accessi al Individuare i problemi e aumentare gli accessi al minimo indispensabile (su file e registry)minimo indispensabile (su file e registry)

Su file e registry, work around fino a nuova versioneSu file e registry, work around fino a nuova versione

3.3. Aumentare i diritti dell’utenteAumentare i diritti dell’utenteNon è una soluzione, è un tornare al problemaNon è una soluzione, è un tornare al problema

Page 13: "Non-Admin" Developing

Guida alla sopravvivenzaGuida alla sopravvivenza

Il 99% dei problemi è causato da Il 99% dei problemi è causato da accessi non autorizzati al File System e accessi non autorizzati al File System e al Registryal Registry

Due tool indispensabili per la diagnosi:Due tool indispensabili per la diagnosi: FileMonFileMon RegMonRegMon Entrambi su Entrambi su www.sysinternals.comwww.sysinternals.com

Page 14: "Non-Admin" Developing

Problemi di File SystemProblemi di File System Directory leggibili da Everyone e modificabili Directory leggibili da Everyone e modificabili

solo da amministratori e power users:solo da amministratori e power users: C:\C:\ C:\WINDOWSC:\WINDOWS C:\WINDOWS\SYSTEM32C:\WINDOWS\SYSTEM32 C:\PROGRAM FILESC:\PROGRAM FILES

Spesso i programmi aprono in scrittura file Spesso i programmi aprono in scrittura file in queste directoryin queste directory Anche se poi fanno solo operazioni di letturaAnche se poi fanno solo operazioni di lettura Comunque è un errore scrivere in queste Comunque è un errore scrivere in queste

directory, ogni utente dovrebbe avere directory, ogni utente dovrebbe avere configurazioni separateconfigurazioni separate

Page 15: "Non-Admin" Developing

Problemi di RegistryProblemi di Registry Hive leggibili da Everyone e Hive leggibili da Everyone e

modificabili solo da amministratorimodificabili solo da amministratori HKEY_LOCAL_MACHINEHKEY_LOCAL_MACHINE

Spesso i programmi aprono in scrittura Spesso i programmi aprono in scrittura queste chiavi di registryqueste chiavi di registry Anche se poi fanno solo operazioni di Anche se poi fanno solo operazioni di

letturalettura Comunque è un errore scrivere in questa Comunque è un errore scrivere in questa

parte di registry, ogni utente dovrebbe parte di registry, ogni utente dovrebbe avere configurazioni separate e usare avere configurazioni separate e usare HKEY_CURRENT_USERHKEY_CURRENT_USER

Page 16: "Non-Admin" Developing

Perché tutti questi problemiPerché tutti questi problemi Molti in buona fedeMolti in buona fede Windows 9x non ha ACL (Access Windows 9x non ha ACL (Access

Control List)Control List) Tutti gli utenti possono fare tutto (o Tutti gli utenti possono fare tutto (o

quasi) su disco e registryquasi) su disco e registry Le applicazioni sviluppate su Windows Le applicazioni sviluppate su Windows

9x funzionano su Windows 9x funzionano su Windows 2000/XP/2003, ma ignorano l’aspetto 2000/XP/2003, ma ignorano l’aspetto della securitydella security

Altre applicazioni non sono state mai Altre applicazioni non sono state mai testate da utenti non amministratori…testate da utenti non amministratori…

Page 17: "Non-Admin" Developing

Regole di scritturaRegole di scrittura

Page 18: "Non-Admin" Developing

4 semplici regole4 semplici regole

Separare dati setup e configurazione Separare dati setup e configurazione utenteutente

Aprire solo in lettura se si deve leggereAprire solo in lettura se si deve leggere Accedere a risorse con privilegi minimiAccedere a risorse con privilegi minimi Memorizzare i dati per utenteMemorizzare i dati per utente

Page 19: "Non-Admin" Developing

Dati setup e configurazione utenteDati setup e configurazione utente

Dati setupDati setup Informazioni sull’installazioneInformazioni sull’installazione

Directory con risorseDirectory con risorse Impostazioni “globali” come porte TCP/IP per Impostazioni “globali” come porte TCP/IP per

un servizioun servizio Configurazione di un servizioConfigurazione di un servizio

Scrivere durante l’installazione su:Scrivere durante l’installazione su: Registry: HKLM (HKEY_LOCAL_MACHINE)Registry: HKLM (HKEY_LOCAL_MACHINE) C:\Program Files\...C:\Program Files\...

Page 20: "Non-Admin" Developing

Dati setup e configurazione utenteDati setup e configurazione utente Configurazione utente (su file)Configurazione utente (su file)

Modelli, configurazioni su file (XML o altro):Modelli, configurazioni su file (XML o altro):C:\Documents and Settings\C:\Documents and Settings\NOMEUTENTENOMEUTENTE\Application Data\\Application Data\

NOMEAZIENDA\NOMEAPPLICAZIONE\...NOMEAZIENDA\NOMEAPPLICAZIONE\...

Modelli, configurazioni su file (XML o altro) per Modelli, configurazioni su file (XML o altro) per tutti gli utenti:tutti gli utenti:

C:\Documents and Settings\C:\Documents and Settings\All UsersAll Users\Application Data\\Application Data\NOMEAZIENDA\NOMEAPPLICAZIONE\...NOMEAZIENDA\NOMEAPPLICAZIONE\... Directory in sola lettura per utenti “normali”Directory in sola lettura per utenti “normali” Ci scrivono solo i gruppi Administrators e Power UsersCi scrivono solo i gruppi Administrators e Power Users

Per ottenere queste directory usare:Per ottenere queste directory usare:

System.Environment.GetFolderPathSystem.Environment.GetFolderPath Vedere parametro Environment.SpecialFolderVedere parametro Environment.SpecialFolder Molti casi specifici già definitiMolti casi specifici già definiti Se non esiste la directory viene creataSe non esiste la directory viene creata

Page 21: "Non-Admin" Developing

Dati setup e configurazione utenteDati setup e configurazione utente Configurazione utente (su registry)Configurazione utente (su registry)

Configurazione globale (directory con dati, percorsi, Configurazione globale (directory con dati, percorsi, impostazioni definite in fase di Setup)impostazioni definite in fase di Setup)HKEY_LOCAL_MACHINEHKEY_LOCAL_MACHINE (abbreviato in (abbreviato in HKLMHKLM)) Solo in lettura per utenti “normali”Solo in lettura per utenti “normali” Ci scrive soltanto il gruppo AdministratorsCi scrive soltanto il gruppo Administrators

Configurazione di partenza per tutti gli utenti:Configurazione di partenza per tutti gli utenti:HKEY_USERS\.DEFAULTHKEY_USERS\.DEFAULT Contenuto copiato nel profilo di un utente al primo logon Contenuto copiato nel profilo di un utente al primo logon

sulla macchina, non interviene sui profili già esistentisulla macchina, non interviene sui profili già esistenti Solo in lettura per utenti “normali”Solo in lettura per utenti “normali” Ci scrive soltanto il gruppo AdministratorsCi scrive soltanto il gruppo Administrators

Configurazione specifica per ogni utenteConfigurazione specifica per ogni utenteHKEY_CURRENT_USERHKEY_CURRENT_USER (abbreviato in (abbreviato in HKCUHKCU)) Diritti completi per l’utenteDiritti completi per l’utente Impossibile vedere la configurazione di un utente diverso (a Impossibile vedere la configurazione di un utente diverso (a

meno che non si sia Administrators)meno che non si sia Administrators)

Page 22: "Non-Admin" Developing

Aprire in sola letturaAprire in sola lettura Il setup viene eseguito da un amministratoreIl setup viene eseguito da un amministratore

Crea e modifica qualsiasi file e/o chiave di Crea e modifica qualsiasi file e/o chiave di registryregistry

Il programma viene eseguito da un utenteIl programma viene eseguito da un utente Dopo il setup Dopo il setup accedere solo in lettura accedere solo in lettura alle alle

informazioni di configurazioneinformazioni di configurazione Eseguire Open con richiesta diritti sola letturaEseguire Open con richiesta diritti sola lettura Effettuare solo operazioni ReadEffettuare solo operazioni Read

Errore comune:Errore comune: Fare la Open con diritti di lettura e scritturaFare la Open con diritti di lettura e scrittura In seguito, fare solo Read senza fare WriteIn seguito, fare solo Read senza fare Write Il problema è che la Open fallisce subito…Il problema è che la Open fallisce subito… Morale: Open va READ ONLYMorale: Open va READ ONLY

Page 23: "Non-Admin" Developing

Accedere a risorse con privilegi Accedere a risorse con privilegi minimiminimi Più in generale, l’accesso a una risorsa Più in generale, l’accesso a una risorsa

va fatto richiedendo privilegi minimiva fatto richiedendo privilegi minimi Aprire un file in lettura se non serve Aprire un file in lettura se non serve

scriverescrivere Accedere a processi, thread e semafori Accedere a processi, thread e semafori

senza richiedere diritti più alti del senza richiedere diritti più alti del necessarionecessario

Se si scrive un servizio o un sito web, Se si scrive un servizio o un sito web, assegnare un utente con privilegi minimi assegnare un utente con privilegi minimi per accedere alle risorse necessarie al per accedere alle risorse necessarie al programmaprogramma Evitare LocalSystem come utente di defaultEvitare LocalSystem come utente di default Un errore (o un attacco) può essere Un errore (o un attacco) può essere

devastantedevastante

Page 24: "Non-Admin" Developing

Memorizzare i dati per utenteMemorizzare i dati per utente I dati dell’utente per default vanno su My I dati dell’utente per default vanno su My

DocumentsDocumentsEnvironment.GetFolderPath( Environment.GetFolderPath( Environment.SpecialFolder.Personal )Environment.SpecialFolder.Personal )

Diritti di ownership per l’utenteDiritti di ownership per l’utente Ogni applicazione può vedere “tutti i dati” Ogni applicazione può vedere “tutti i dati”

dell’utentedell’utente Anche per questo è importante evitare Anche per questo è importante evitare

l’installazione di virus e spywarel’installazione di virus e spyware

Dove mettere dati visibili e modificabili Dove mettere dati visibili e modificabili da tutti gli utenti?da tutti gli utenti?

Page 25: "Non-Admin" Developing

Memorizzare i dati per utenteMemorizzare i dati per utente Dove mettere dati visibili e modificabili da Dove mettere dati visibili e modificabili da

tutti gli utenti?tutti gli utenti? Non esiste uno standardNon esiste uno standard Problema latente di sicurezza: i dati sono pubbliciProblema latente di sicurezza: i dati sono pubblici Esempio: un MDB con la contabilità… non è una Esempio: un MDB con la contabilità… non è una

buona idea renderlo accessibile a tuttibuona idea renderlo accessibile a tutti Possibile soluzione:Possibile soluzione:

Individuare una directory comune e cambiare le ACL Individuare una directory comune e cambiare le ACL durante il setup (una potrebbe essere durante il setup (una potrebbe essere SpecialFolder.CommonApplicationDataSpecialFolder.CommonApplicationData) )

Resta il problema di aggiungere dei nuovi utenti in Resta il problema di aggiungere dei nuovi utenti in futuro: deve farlo l’amministratorefuturo: deve farlo l’amministratore

NON LASCIARE DIRITTI A EVERYONE!!!NON LASCIARE DIRITTI A EVERYONE!!!

Page 26: "Non-Admin" Developing

Sviluppare senza essere Sviluppare senza essere amministratoriamministratori

Page 27: "Non-Admin" Developing

La vita dura dell’utenteLa vita dura dell’utente Si può e si deve sviluppare con un Si può e si deve sviluppare con un

utente non amministratoreutente non amministratore È l’unico modo per capire subito cosa È l’unico modo per capire subito cosa

succede ai programmi sviluppatisuccede ai programmi sviluppati È anche una questione psicologica: vivere È anche una questione psicologica: vivere

sulla propria pelle certe esperienze fa sulla propria pelle certe esperienze fa aumentare la sensibilità al problemaaumentare la sensibilità al problema

È un modo più sicuro di usare un PCÈ un modo più sicuro di usare un PC Indipendentemente da firewall e antivirusIndipendentemente da firewall e antivirus

Page 28: "Non-Admin" Developing

Come fare il grande saltoCome fare il grande salto Caratteristiche dell’utente:Caratteristiche dell’utente:

NoNo gruppo Administrators gruppo Administrators NoNo gruppo Power Users gruppo Power Users SìSì gruppo Users gruppo Users

Per uno sviluppatorePer uno sviluppatore Creare un gruppo “Developer” o Creare un gruppo “Developer” o

“Advanced User”“Advanced User” Si definiranno le permission sul gruppo e non Si definiranno le permission sul gruppo e non

sull’utentesull’utente In caso di nuovi utenti sviluppatori sarà facile In caso di nuovi utenti sviluppatori sarà facile

abilitarliabilitarli Associare l’utente a tale gruppoAssociare l’utente a tale gruppo

Page 29: "Non-Admin" Developing

Come fare il grande saltoCome fare il grande salto Tre strade:Tre strade:

Cambiare il proprio utente (amministratore locale Cambiare il proprio utente (amministratore locale della macchina) in un utente “normale”della macchina) in un utente “normale” Problema: ciò che è già installato resta accessibile Problema: ciò che è già installato resta accessibile

all’utente solo perché è owner di registry e directoryall’utente solo perché è owner di registry e directory Si rischia di non percepire alcuni problemiSi rischia di non percepire alcuni problemi

Creare un nuovo utenteCreare un nuovo utente Strada consigliabileStrada consigliabile Si perdono i profiliSi perdono i profili

Reinstallare tuttoReinstallare tutto Si perdono i profiliSi perdono i profili Si evitano “eredità” del passatoSi evitano “eredità” del passato Ci vuole un sacco di tempo!!Ci vuole un sacco di tempo!!

Page 30: "Non-Admin" Developing

Prepararsi psicologicamentePrepararsi psicologicamente Perché questo avvertimento?Perché questo avvertimento?

Tanti programmi e tante operazioni non Tanti programmi e tante operazioni non funzioneranno più come prima! funzioneranno più come prima!

I primi due giorni sono i più duriI primi due giorni sono i più duri Ci saranno delle crisi…Ci saranno delle crisi…

C’è sempre una scorciatoia temporaneaC’è sempre una scorciatoia temporanea Resistete! Potete farcela!Resistete! Potete farcela! Esistono dei tool e qualche trucco per vivere Esistono dei tool e qualche trucco per vivere

megliomeglio Dopo una settimana:Dopo una settimana:

Vi sentirete meglio di primaVi sentirete meglio di prima Avvertirete un maggiore controllo sulla macchinaAvvertirete un maggiore controllo sulla macchina Vi chiederete come avete fatto primaVi chiederete come avete fatto prima

Page 31: "Non-Admin" Developing

RunAsRunAs Il primo strumento da usare è RunAsIl primo strumento da usare è RunAs Consente di avviare un programma con Consente di avviare un programma con

le credenziali di un altro utentele credenziali di un altro utente Richiede un logon a ogni esecuzioneRichiede un logon a ogni esecuzione Si può fare uno script con le password in Si può fare uno script con le password in

chiaro ma… bye bye security!chiaro ma… bye bye security! Va usato solo per le applicazioni che Va usato solo per le applicazioni che

necessitano necessitano realmenterealmente di un di un amministratore:amministratore: Configurazione di sistemaConfigurazione di sistema Console amministrativeConsole amministrative FileMon, RegMon, ProcessExplorerFileMon, RegMon, ProcessExplorer

Page 32: "Non-Admin" Developing

Riparare le applicazioni Riparare le applicazioni scritte malescritte male Individuare Registry e Directory di cui Individuare Registry e Directory di cui

modificare le ACLmodificare le ACL Usare RegMon e FileMonUsare RegMon e FileMon

Di solito si trova un Access Denied poco Di solito si trova un Access Denied poco prima dell’interruzione del programmaprima dell’interruzione del programma

Abbassare al minimo indispensabile i Abbassare al minimo indispensabile i diritti delle ACLdiritti delle ACL Solo sulla directory interessataSolo sulla directory interessata Meglio (quando possibile) solo sul file Meglio (quando possibile) solo sul file

interessatointeressato Usare gruppo “Developer”/“Advanced User” Usare gruppo “Developer”/“Advanced User”

piuttosto che il singolo utentepiuttosto che il singolo utente

Page 33: "Non-Admin" Developing

Setup di Visual Studio .NETSetup di Visual Studio .NET Visual Studio .NET crea alcuni gruppi a cui Visual Studio .NET crea alcuni gruppi a cui

uno sviluppatore deve appartenere:uno sviluppatore deve appartenere: VS DevelopersVS Developers Debugger UsersDebugger Users

Inserire a mano gli utenti sviluppatori in Inserire a mano gli utenti sviluppatori in questi gruppiquesti gruppi

Alcune attività restano agli amministratori:Alcune attività restano agli amministratori: Registrazione di componenti COM Registrazione di componenti COM

(regsvr32/regasm)(regsvr32/regasm) Installazione di assembly nella GAC (gacutil)Installazione di assembly nella GAC (gacutil) Installazione di componenti .NET nel catalogo Installazione di componenti .NET nel catalogo

COM+ (regsvcs)COM+ (regsvcs)

Page 34: "Non-Admin" Developing

ASP.NETASP.NET Due modalità di connessione:Due modalità di connessione:

File ShareFile Share È il defaultÈ il default Basta avere i diritti sul file systemBasta avere i diritti sul file system

Front Page Server ExtensionFront Page Server Extension Non si può creare una Virtual Directory da Non si può creare una Virtual Directory da

VS.NETVS.NET Articolo KB 833896Articolo KB 833896

Creare la Virtual Directory manualmenteCreare la Virtual Directory manualmente Usare un utente abilitato: VS Developers sul PC Usare un utente abilitato: VS Developers sul PC

locale o un amministratore su un web server remotolocale o un amministratore su un web server remoto

Successivamente creare il progetto in VS.NET Successivamente creare il progetto in VS.NET e connettersi alla Virtual Directory esistentee connettersi alla Virtual Directory esistente

Page 35: "Non-Admin" Developing

Debug ASP.NETDebug ASP.NET Due aspettiDue aspetti

L’utente con cui gira l’applicazioneL’utente con cui gira l’applicazione Usare lo stesso utente con cui si sviluppa per fare debugUsare lo stesso utente con cui si sviluppa per fare debug

I diritti sulle directory usate da ASP.NETI diritti sulle directory usate da ASP.NET Abilitare i diritti su tali directory all’utente con cui gira Abilitare i diritti su tali directory all’utente con cui gira

l’applicazione ASP.NETl’applicazione ASP.NET Windows 2000/XP:Windows 2000/XP:

L’utente associato a ASPNET_WP.EXE è uno solo per tutta la L’utente associato a ASPNET_WP.EXE è uno solo per tutta la macchinamacchina Workaround: eseguire VS.NET con RunAs _solo_ limitatamente alla Workaround: eseguire VS.NET con RunAs _solo_ limitatamente alla

fase di debugfase di debug

Windows 2003:Windows 2003: Gli application pool di II6 aiutano nella gestione di diverse Gli application pool di II6 aiutano nella gestione di diverse

applicazioni con credenziali differentiapplicazioni con credenziali differenti Visual Studio 2005:Visual Studio 2005:

Non esisteranno più questi problemi a prescindere da IIS, visto Non esisteranno più questi problemi a prescindere da IIS, visto che in debug potremo usare “che in debug potremo usare “Visual Web Developer Web Visual Web Developer Web Server”Server”..

Page 36: "Non-Admin" Developing

Modifica utente ASP.NETModifica utente ASP.NET IIS 5 (fino a Windows XP)IIS 5 (fino a Windows XP)

Modificare tag processModel del file web.configModificare tag processModel del file web.config<processModel enable="true" <processModel enable="true"

userName="DOMAIN\username" userName="DOMAIN\username" password="password="pwdpwd" / >" / >

Usare ASPNET_SETREG per cifrare la password Usare ASPNET_SETREG per cifrare la password senza lasciarla in chiaro (KB 329290senza lasciarla in chiaro (KB 329290))

IIS 6 (Windows 2003)IIS 6 (Windows 2003) Creare un Application PoolCreare un Application Pool Assegnare utente sviluppatore all’application Assegnare utente sviluppatore all’application

poolpool Assegnare utente sviluppatore a gruppo Assegnare utente sviluppatore a gruppo

IIS_WPGIIS_WPG Altrimenti non funziona con ASP.NETAltrimenti non funziona con ASP.NET

Assegnare la Virtual Directory all’Application Assegnare la Virtual Directory all’Application PoolPool

Page 37: "Non-Admin" Developing

VB6VB6 Brutte notizieBrutte notizie Non è pensato per essere utilizzato da utenti Non è pensato per essere utilizzato da utenti

non amministratorinon amministratori Si può ovviare con le tecniche descritte Si può ovviare con le tecniche descritte

primaprima Usare FileMon e RegMonUsare FileMon e RegMon Individuare punti in cui modificare le ACLIndividuare punti in cui modificare le ACL

Molti problemi causati da componenti Molti problemi causati da componenti (ActiveX) di terze parti(ActiveX) di terze parti Anche qua si può ovviare con modifica di ACLAnche qua si può ovviare con modifica di ACL

Problema: è un lavoro immane e si rischia di Problema: è un lavoro immane e si rischia di tornare al punto di partenza (bassa security)tornare al punto di partenza (bassa security)

Page 38: "Non-Admin" Developing

DEMODEMOTips and TrickTips and Trick

Page 39: "Non-Admin" Developing

ConclusioneConclusione La security è un problema di tutti,La security è un problema di tutti,

non solo di Microsoftnon solo di Microsoft Chiunque scriva software è parte del Chiunque scriva software è parte del

problemaproblema Ciascuno deve fare la sua parteCiascuno deve fare la sua parte Per cominciare:Per cominciare:

Scrivere applicazioni utilizzabili da utenti Scrivere applicazioni utilizzabili da utenti “normali”“normali”

Sviluppare con un utente non amministratoreSviluppare con un utente non amministratore

Page 40: "Non-Admin" Developing

Link utiliLink utili Bug di Visual Studio, KB833896, Bug di Visual Studio, KB833896,

http://support.microsoft.com/default.aspx?scid=kb;EN-http://support.microsoft.com/default.aspx?scid=kb;EN-US;833896US;833896

Uso di aspnet_setreg, KB329290, Uso di aspnet_setreg, KB329290, http://support.microsoft.com/default.aspx?scid=kb;EN-http://support.microsoft.com/default.aspx?scid=kb;EN-US;329290US;329290

Developing Software in Visual Developing Software in Visual Studio .NET with Non-Administrative Studio .NET with Non-Administrative Privileges Privileges http://msdn.microsoft.com/library/en-us/dv_vstechart/html/ http://msdn.microsoft.com/library/en-us/dv_vstechart/html/ tchDevelopingSoftwareInVisualStudioNETWithNon-tchDevelopingSoftwareInVisualStudioNETWithNon-AdministrativePrivileges.aspAdministrativePrivileges.asp

Keith Brown - Libri e blogKeith Brown - Libri e bloghttp://pluralsight.com/blogs/keith/default.aspxhttp://pluralsight.com/blogs/keith/default.aspx

Why non admin – WikiWhy non admin – Wikihttp://nonadmin.editme.com/WhyNonAdminhttp://nonadmin.editme.com/WhyNonAdmin