La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

Raffaele Rialdi Microsoft C# MVPhttp://mvp.support.microsoft.com MVP Profilehttp://snipurl.com/f0cv Bloghttp://blogs/ugidotnet.org/raffaele

Presentazioni simili


Presentazione sul tema: "Raffaele Rialdi Microsoft C# MVPhttp://mvp.support.microsoft.com MVP Profilehttp://snipurl.com/f0cv Bloghttp://blogs/ugidotnet.org/raffaele"— Transcript della presentazione:

1 Raffaele Rialdi Microsoft C# MVPhttp://mvp.support.microsoft.com MVP Profilehttp://snipurl.com/f0cv Bloghttp://blogs/ugidotnet.org/raffaele Vevy Europe SpA La sicurezza in SQL Server

2 Agenda Introduzione Introduzione Architettura e servizi di SQL Server 2000 Architettura e servizi di SQL Server 2000 Larchitettura di sicurezza in SQL Server 2000 Larchitettura di sicurezza in SQL Server 2000 Login e Database User Account Login e Database User Account Permission e Ruoli Permission e Ruoli Security Issues Security Issues Encryption Encryption Best practices Best practices

3 Sicurezza applicativa Controllare SEMPRE linput dellutente Controllare SEMPRE linput dellutente Per evitare attacchi di tipo SQL Injection o Cross-scripting Per evitare attacchi di tipo SQL Injection o Cross-scripting Eseguire i servizi con account utente con solo i privileggi strettamente necessari Eseguire i servizi con account utente con solo i privileggi strettamente necessari Per contrastare attacchi di tipo escalation dei privilegi Per contrastare attacchi di tipo escalation dei privilegi Mai mantenere le password degli utenti in chiaro Mai mantenere le password degli utenti in chiaro Utilizzare tecniche di hashing Utilizzare tecniche di hashing Operare con i database server utilizzando connessioni a bassi privilegi Operare con i database server utilizzando connessioni a bassi privilegi

4 Considerazioni sulla protezione in aziende di piccole e medie dimensioni Server con più ruoli Minaccia interna o accidentale Risorse limitate per l'implementa- zione di soluzioni di protezione Mancanza di esperienza sulla protezione Utilizzo di sistemi non aggiornati Conseguenze legali L'accesso fisico impedisce molte misure di protezione

5 Principi della protezione dei server La riservatezza assicura la protezione dell'accesso alle informazioni La riservatezza assicura la protezione dell'accesso alle informazioni L'integrità assicura l'assenza di modifiche nelle informazioni L'integrità assicura l'assenza di modifiche nelle informazioni La disponibilità assicura la possibilità di accesso alle informazioni La disponibilità assicura la possibilità di accesso alle informazioni Riservatezza IntegritàDisponibilità Principi della protezione

6 Difesa a più livelli L'utilizzo di un approccio a più livelli offre una serie di vantaggi, tra cui: L'utilizzo di un approccio a più livelli offre una serie di vantaggi, tra cui: Aumenta il rischio per un hacker di essere rilevato e scoperto Aumenta il rischio per un hacker di essere rilevato e scoperto Riduce le probabilità di successo di un attacco Riduce le probabilità di successo di un attacco Criteri, procedure e consapevolezza Firewall, VPN di quarentena Personale di sicurezza, serrature e dispositivi di monitoraggio Segmenti di rete, IPSec, NIDS Protezione avanzata di applicazioni, antivirus Elenchi di controllo dell'accesso, crittografia Formazione degli utenti Sicurezza fisica Perimetro Rete interna Host Applicazione Dati

7 Il servizio SQL Server

8 Componenti Client-Server

9 Servizi di SQL Server

10 Larchitettura di sicurezza Sql Server implementa le due principali funzionalità di sicurezza Sql Server implementa le due principali funzionalità di sicurezza Autenticazione Autenticazione Chi sono gli utenti che tentano di connettersi Chi sono gli utenti che tentano di connettersi Autorizzazione Autorizzazione Che diritti hanno sui dati Che diritti hanno sui dati Autenticazione integrata con Windows Autenticazione integrata con Windows Sql non riconosce gli utenti ma demanda al S.O. questa operazione Sql non riconosce gli utenti ma demanda al S.O. questa operazione Autenticazione standard Autenticazione standard Architettura obsoleta, meno sicura Architettura obsoleta, meno sicura

11 Windows Authentication La connessione viene stabilita con le credenziali della login Connessione al computer che ospita SQL Server Verifica dei permessi per i vari comandi sugli oggetti del db Connessione di rete/pre-login handshake Richiesta di autenticazione della login a SQL Server Richiesto switch nel contesto del db + autorizzazione Esecuzione di comandi sugli oggetti Viene stabilito un contesto di database

12 Security Security allinstallazione Security allinstallazione Dir e Files, Registry, sa password Dir e Files, Registry, sa password La modalità di security di default per linstallazione di SQL Server 2000 è Autenticazione Integrata La modalità di security di default per linstallazione di SQL Server 2000 è Autenticazione Integrata MS la consiglia come lunica veramente sicura, insieme allinstallazione su NTFS MS la consiglia come lunica veramente sicura, insieme allinstallazione su NTFS Solo gli account con cui girano i servizi e i local administrator avranno qualche permission sulle risorse utilizzate Solo gli account con cui girano i servizi e i local administrator avranno qualche permission sulle risorse utilizzate Durante il setup è possibile impostare una password per sa Durante il setup è possibile impostare una password per sa Vivamente consigliato Vivamente consigliato

13 Login e User Account Una login da il diritto di aprire una connessione tra unapplicazione e il server Una login da il diritto di aprire una connessione tra unapplicazione e il server È contenuta nella sysxlogins del master È contenuta nella sysxlogins del master Si applica a tutti i db dellistanza Si applica a tutti i db dellistanza Non ha permessi di accesso ai db Non ha permessi di accesso ai db tranne per i SysAdmin tranne per i SysAdmin Un database user account da laccesso alla login al contesto di sicurezza del database Un database user account da laccesso alla login al contesto di sicurezza del database I permessi di accesso nel db sono dati ai database users, non alle logins I permessi di accesso nel db sono dati ai database users, non alle logins Sono specifici per singolo database Sono specifici per singolo database

14 Permission SQL Server gestisce le permission di accesso agli oggetti con tre comandi: SQL Server gestisce le permission di accesso agli oggetti con tre comandi: GRANT concede un permesso GRANT concede un permesso DENY nega esplicitamente un permesso DENY nega esplicitamente un permesso REVOKE toglie una condizione precedente REVOKE toglie una condizione precedente Grant Revoke [deny] Deny DENY Revoke Grant - +

15 Ruoli in SQL Server Fixed server role Fixed server role Semplificano lamministrazione del server Semplificano lamministrazione del server Fixed database role Fixed database role Semplificano lamministrazione del database Semplificano lamministrazione del database Custom database role Custom database role Semplificano la gestione delle permission degli utenti nel database Semplificano la gestione delle permission degli utenti nel database Application role Application role Permettono di dare le permission alle applicazioni indipendentemente dagli utenti che le utilizzano Permettono di dare le permission alle applicazioni indipendentemente dagli utenti che le utilizzano

16 Ruoli in SQL Server 2000 SQL Server assegna le Login agli User Accounts e ai Roles Database User Database Role Windows 2000 Group User SQL Server Login Account SQL Server verifica la Trusted Connection SQL Server verifica Login e Password SQL Server Server Role

17 Security Security basata sui ruoli migliorata Security basata sui ruoli migliorata Nuovo ruolo BulkAdmin Nuovo ruolo BulkAdmin Può eseguire statement BULK INSERT Può eseguire statement BULK INSERT SecurityAdmin può cambiare le password SecurityAdmin può cambiare le password Eccetto per i membri del ruolo sysadmin Eccetto per i membri del ruolo sysadmin ServerAdmin può controllare tutti gli aspetti dei messaggi sul server ServerAdmin può controllare tutti gli aspetti dei messaggi sul server Ora può utilizzare sp_addmessage, sp_dropmessage, e sp_altermessage Ora può utilizzare sp_addmessage, sp_dropmessage, e sp_altermessage Certificazione C2 ottenuta dal National Computer Security Center (NCSC), una divisione della National Security Agency (NSA) Certificazione C2 ottenuta dal National Computer Security Center (NCSC), una divisione della National Security Agency (NSA)

18 Security issues La password di sa rimane vuota quando durante il setup si sceglie Windows Only La password di sa rimane vuota quando durante il setup si sceglie Windows Only Meglio impostarla comunque Meglio impostarla comunque Il gruppo Builtin\Administrators Il gruppo Builtin\Administrators è SysAdmin di default è SysAdmin di default Meglio toglierlo e rimpiazzarlo con [NT Authority\System] (per MsSearch) Meglio toglierlo e rimpiazzarlo con [NT Authority\System] (per MsSearch) e con gli account con i quali girano i servizi. e con gli account con i quali girano i servizi. Quando è in cluster, anche il service account del cluster Quando è in cluster, anche il service account del cluster Mai lasciare la password vuota per sa Mai lasciare la password vuota per sa Eseguire I servizi con account a bassa priorità limita I danni in caso di attacco Eseguire I servizi con account a bassa priorità limita I danni in caso di attacco

19 Network Security Le caratteristiche di sicurezza di SQL Server non sostituiscono la classica network security Le caratteristiche di sicurezza di SQL Server non sostituiscono la classica network security Es. da SQL Server non è possibile restringere laccesso dei client per IP Es. da SQL Server non è possibile restringere laccesso dei client per IP Firewall, IPSec, o altri network layer filter permettono di agire su indirizzi e porte TCP consentite Firewall, IPSec, o altri network layer filter permettono di agire su indirizzi e porte TCP consentite Se la macchina è esposta, spostare le porte di default Se la macchina è esposta, spostare le porte di default TCP 1433, UDP 1434 TCP 1433, UDP 1434

20 Network Security Encryption Encryption Le netlibs possono criptare Le netlibs possono criptare Informazioni di login e i dati della sessioni Informazioni di login e i dati della sessioni utilizzando SSL/TLS La fase di handshake durante il logon viene sempre criptata La fase di handshake durante il logon viene sempre criptata È possibile criptare tutto il traffico È possibile criptare tutto il traffico Le nuove funzioni interne chiamano le Crypto API di Win2K Le nuove funzioni interne chiamano le Crypto API di Win2K Occore un certificato sul server per utilizzare la encryption SSL Occore un certificato sul server per utilizzare la encryption SSL Il client deve accettare il certificato Il client deve accettare il certificato

21 File Encryption E possibile proteggere i file di SQL Server E possibile proteggere i file di SQL Server Utilizzando Windows Encrypted File System (EFS) Utilizzando Windows Encrypted File System (EFS) Windows 2000 o successivi Windows 2000 o successivi Prodotti di terze parti Prodotti di terze parti Cè un overhead sul sistema Cè un overhead sul sistema < 5% solitamente < 5% solitamente Pienamente supportato da SQL Server Pienamente supportato da SQL Server Previene la copia fisica dei file dati Previene la copia fisica dei file dati

22 Permission Standard Ogni Database User Account appartiene inevitabilmente al ruolo Public Ogni Database User Account appartiene inevitabilmente al ruolo Public Il ruolo Public per default può accedere ad una serie di informazioni Il ruolo Public per default può accedere ad una serie di informazioni In alcuni db di sistema è abilitato lutente guest In alcuni db di sistema è abilitato lutente guest Realmente necessario solo in master e in tempdb Realmente necessario solo in master e in tempdb Togliere laccesso al gruppo public sugli oggetti per i quali è assolutamente necessario Togliere laccesso al gruppo public sugli oggetti per i quali è assolutamente necessario In Yukon sarà disabilitato di default, compreso laccesso ai metadati In Yukon sarà disabilitato di default, compreso laccesso ai metadati

23 Auditing Auditing architecture Auditing architecture Basato sulle funzionalità di SQL Profiler Basato sulle funzionalità di SQL Profiler Larchitettura del Profiler è cambiata Larchitettura del Profiler è cambiata SQL Trace – motore di trace lato server SQL Trace – motore di trace lato server SQL Profiler – componente di UI SQL Profiler – componente di UI Vengono tracciate 19 tipologie di eventi Vengono tracciate 19 tipologie di eventi Logon/logoff, Gant Revoke Deny,Modify logon property, Password change event, Add/remove from fixed server role, Server shutdown/pause/start, ecc. Logon/logoff, Gant Revoke Deny,Modify logon property, Password change event, Add/remove from fixed server role, Server shutdown/pause/start, ecc. È implementato attraverso un file di trace È implementato attraverso un file di trace Può essere gestito come buffer circolare Può essere gestito come buffer circolare

24 Extended Stored Procedure Sono lo strumento per estendere le funzionalità di SQL Server attraverso funzioni scritte in C e C++ in DLL esterne Sono lo strumento per estendere le funzionalità di SQL Server attraverso funzioni scritte in C e C++ in DLL esterne Normalmente vengono eseguite in-process con il servizio SQL Server Normalmente vengono eseguite in-process con il servizio SQL Server Alcune di queste consentono allintruso di eseguire privilege escalation Alcune di queste consentono allintruso di eseguire privilege escalation

25 XP_CMDSHELL Di default solo i sysadmin possono eseguirla Di default solo i sysadmin possono eseguirla Viene eseguita nel contesto di sicurezza del servizio o con il proxy account se lutente che la lancia non è sysadmin Viene eseguita nel contesto di sicurezza del servizio o con il proxy account se lutente che la lancia non è sysadmin NON concedere laccesso se non giustificato NON concedere laccesso se non giustificato Evitare di fare girare il servizio come amministratore della macchina Evitare di fare girare il servizio come amministratore della macchina MAI eseguire SQL Server su un domain controller e permettere xp_cmdshell MAI eseguire SQL Server su un domain controller e permettere xp_cmdshell

26

27 Security Best Practices SQL Server Agent SQL Server Agent Di default, le SP per la creazione di job possono essere chiamate da public Di default, le SP per la creazione di job possono essere chiamate da public Il meccanismo di sicurezza dei job di per sé evita che qualcuno possa eseguire operazioni di tipo ActiveX script o Operative System Command ma… Il meccanismo di sicurezza dei job di per sé evita che qualcuno possa eseguire operazioni di tipo ActiveX script o Operative System Command ma… E possibile sfruttare altre vulnerabilità per eseguire codice nel contesto di sicurezza del servizio E possibile sfruttare altre vulnerabilità per eseguire codice nel contesto di sicurezza del servizio

28 Best Practices Se è possibile evitare di fare girare il servizio come amministratore o LocalSystem Se è possibile evitare di fare girare il servizio come amministratore o LocalSystem Anche se complica la gestione della sicurezza Anche se complica la gestione della sicurezza Ma Enterprise Manager ci viene incontro… Ma Enterprise Manager ci viene incontro… Rimuovere BUILTIN\administrators dai sysadmins Rimuovere BUILTIN\administrators dai sysadmins Se per forza devo andare in Mixed mode Se per forza devo andare in Mixed mode Configurare password sensate Configurare password sensate MAI usare password blank MAI usare password blank Utilizzare SSL Utilizzare SSL

29 Best Practices Applicare sempre le ultime security patch [Q316333] Applicare sempre le ultime security patch [Q316333] Abilitare lauditing e il tracing in modo appropriato Abilitare lauditing e il tracing in modo appropriato Monitorare i log e gli alert relativi alla sicurezza Monitorare i log e gli alert relativi alla sicurezza Non utilizzare il ruolo sysadmin applicativamente e concedere solo se necessario Non utilizzare il ruolo sysadmin applicativamente e concedere solo se necessario Rimuovere xp_cmdshell, se non utilizzata Rimuovere xp_cmdshell, se non utilizzata

30 Client connection E sempre il client che decide il tipo di security da utilizzare per la connessione E sempre il client che decide il tipo di security da utilizzare per la connessione Il server può solo rifiutarsi di accettare le credenziali non valide Il server può solo rifiutarsi di accettare le credenziali non valide Utilizzare la sicurezza integrata con Windows Utilizzare la sicurezza integrata con Windows ….Integrated Security=SSPI; … ….Integrated Security=SSPI; … Non cablare nome utente e password nel codice Non cablare nome utente e password nel codice Utilizzare i tanti metodi disponibili nelle varie piattaforme di sviluppo Utilizzare i tanti metodi disponibili nelle varie piattaforme di sviluppo Non utilizzare la login sa Non utilizzare la login sa Scrivere codice security-aware Scrivere codice security-aware

31 Data Encryption Microsoft non la fornisce in SQL Server Microsoft non la fornisce in SQL Server Problemi di performance e di recuperabilità dei dati Problemi di performance e di recuperabilità dei dati Problema aperto per le prossime versioni del prodotto Problema aperto per le prossime versioni del prodotto Esistono soluzioni di terze parti Esistono soluzioni di terze parti Limita la possibilità di sottrazione fisica delle informazioni Limita la possibilità di sottrazione fisica delle informazioni

32 Sviluppatori, Sistemisti o DBA? Cosa abbiamo capito? Cosa abbiamo capito? Nel rendere sicura una piattaforma basata su SQL Server occorre la partecipazione di tutte queste figure Nel rendere sicura una piattaforma basata su SQL Server occorre la partecipazione di tutte queste figure Se in una di queste aree qualcuno lascia degli spazi aperti… Se in una di queste aree qualcuno lascia degli spazi aperti… SQL Server può diventare una piattaforma potente per altri tipi di attacchi allinterno della rete SQL Server può diventare una piattaforma potente per altri tipi di attacchi allinterno della rete

33 Sviluppatori, Sistemisti o DBA? Sistemista Sistemista Organizzazione di utenti e gruppi di domino Organizzazione di utenti e gruppi di domino Configurazione dei security account dei servizi Configurazione dei security account dei servizi Implementazione di Kerberos Implementazione di Kerberos Configurazione di firewall, IPSec e IP Filtering Configurazione di firewall, IPSec e IP Filtering Configurazione encryption con SSL Configurazione encryption con SSL File encryption File encryption Configurazione di SQLXML (parte IIS) Configurazione di SQLXML (parte IIS)

34 Sviluppatori, Sistemisti o DBA? DBA DBA Gestione utenti e ruoli nel DB server Gestione utenti e ruoli nel DB server Configurazione dei database user account e delle loro permission Configurazione dei database user account e delle loro permission Configurazione dei ruoli nei database Configurazione dei ruoli nei database Modifica delle impostazioni di default per Extended Stored Procedure Modifica delle impostazioni di default per Extended Stored Procedure Configurazione dellAuditing Configurazione dellAuditing Configurazione di SQLXML (parte SQL) Configurazione di SQLXML (parte SQL)

35 Sviluppatori, Sistemisti o DBA? Sviluppatore Sviluppatore Sviluppo di Stored Procedure che verificano sempre i parametri in input Sviluppo di Stored Procedure che verificano sempre i parametri in input Sviluppo del codice client che utilizza correttamente la security per le connessioni Sviluppo del codice client che utilizza correttamente la security per le connessioni Utilizzo di Trusted Connection dove possibile Utilizzo di Trusted Connection dove possibile Encryption di codice T-SQL per nascondere la logica applicativa Encryption di codice T-SQL per nascondere la logica applicativa Encryption dei dati nelle tabelle, solo se è necessario Encryption dei dati nelle tabelle, solo se è necessario

36 Link utili [Q316333] et/security/bulletin/MS asp [Q316333] et/security/bulletin/MS asp et/security/bulletin/MS asp et/security/bulletin/MS asp [Q321911] et/security/bulletin/MS asp [Q321911] et/security/bulletin/MS asp et/security/bulletin/MS asp et/security/bulletin/MS asp

37 Risorse Academic Academic User Groups User Groupshttp://www.ugiss.orghttp://www.sqlpass.orghttp://www.ugidotnet.org Microsoft Microsoft

38 Risorse Newsgroups Newsgroups news://msnews.microsoft.com news://msnews.microsoft.commicrosoft.public.it.sqlmicrosoft.public.sqlserver.* Non vi fanno uscire via NNTP ? Non vi fanno uscire via NNTP ?http://msdn.microsoft.com/newsgroups Novità! Novità!http://www.microsoft.com/italy/sql/support/newsgroup/

39 © Microsoft Corporation. All rights reserved. This presentation is for informational purposes only. Microsoft makes no warranties, express or implied, in this summary.

40 Per sfatare qualche luogo comune… Windows non è sicuro!! Windows non è sicuro!! From January 2002 through November 2002, these were the number of security advisories issued (fonte ISS – X Data): From January 2002 through November 2002, these were the number of security advisories issued (fonte ISS – X Data): Debian: 124 Debian: 124 Mandrake: 86 Mandrake: 86 Red Hat 7.2: 87 Red Hat 7.2: 87 Sun Solaris: 68 Sun Solaris: 68 Windows 2000 Server: 36 Windows 2000 Server: 36 Windows XP Pro: 28 Windows XP Pro: 28 CERT advisories CERT advisories SUN OS: 12 SUN OS: 12 Red Hat Linux: 9 Red Hat Linux: 9 Microsoft : 4 Microsoft : 4

41 Per sfatare qualche luogo comune… Windows non è affidabile!! Windows non è affidabile!! Windows Server 2003 Windows Server 2003 System uptime > % System uptime > % Operations & best practices Operations & best practices Windows Reliability Strategy Windows Reliability Strategy Case studies Case studies NASDAQ Stock Market Inc NASDAQ Stock Market Inc London Stock Exchange London Stock Exchange Lockheed Martin Lockheed Martin Pirelli Spa Pirelli Spa Ecc. Ecc.

42 Per sfatare qualche luogo comune… Windows non è scalabile!! Windows non è scalabile!! Bechmark TPC-C (www.tpc.org) Bechmark TPC-C (www.tpc.org)www.tpc.org Windows Server 2003 Enterprise Edition 64-bit e SQL Server 2000 Enterprise Edition 64-bit Windows Server 2003 Enterprise Edition 64-bit e SQL Server 2000 Enterprise Edition 64-bit tpmC tpmC Benchmark SAP Benchmark SAP Windows 2000 DataCenter Edition e SQL Server 2000 Enterprise Edition Windows 2000 DataCenter Edition e SQL Server 2000 Enterprise Edition utenti concorrenti utenti concorrenti

43 © Microsoft Corporation. All rights reserved. This presentation is for informational purposes only. Microsoft makes no warranties, express or implied, in this summary. Appendice

44 SQL Injection Un intruso può devastare il db... Un intruso può devastare il db... Select * from authors where au_lname like ' ' ; drop authors - - ' string strSql = "Select * from authors where au_lname like '" + TextBox1.Text + "'"; SqlCommand cmd = new SqlCommand(strSql, Cnn); SqlDataReader dr = cmd.ExecuteReader(); string strSql = "Select * from authors where au_lname like '" + TextBox1.Text + "'"; SqlCommand cmd = new SqlCommand(strSql, Cnn); SqlDataReader dr = cmd.ExecuteReader(); Prima query Seconda query ScartatoScartato

45 SQL Injection... usare i parameters!!!... I Parameters incrementano anche le performance: I Parameters incrementano anche le performance: non c'è conversione da string a tipo sul db non c'è conversione da string a tipo sul db la query rimane compilata e preparata sul db server la query rimane compilata e preparata sul db server exec sp_executesql N'Select * from authors where au_lname = ' ' ' ; drop authors - - ' exec sp_executesql N'Select * from authors where au_lname = ' ' ' ; drop authors - - ' apice raddoppiato da ADO.NET Gli apici non sono l'unico problema: select * from titles where royalty = 0 ; drop authors string strSql = "Select * from authors where au_lname SqlCommand cmd = new SqlCommand(strSql, Cnn); SqlDbType.VarChar,40); SqlDataReader dr = cmd.ExecuteReader(); string strSql = "Select * from authors where au_lname SqlCommand cmd = new SqlCommand(strSql, Cnn); SqlDbType.VarChar,40); SqlDataReader dr = cmd.ExecuteReader();

46 Autenticazione in SQL Server 2000 sysxloginssysxlogins Windows 2000 Group or User SQL Server Login Account sysxloginssysxlogins Verifica la che esista il SID nella tabella sysxlogins; Windows 2000 ha già verificato la password al logon Verifica la che esista il SID nella tabella sysxlogins; Windows 2000 ha già verificato la password al logon Verifica che login e pwd esistano In sysxlogins SQL Server Se non uso SSL o MultiProtocol encryption tutto passa in chiaro

47 Autorizzazione in SQL Server 2000 Northwind..sysusersNorthwind..sysusers uid name public dbo INFORMATION_SCHEMA payroll public dbo INFORMATION_SCHEMA payroll Qui vengono mappate le login nel DB Qui vengono mappate le login nel DB Qui si trovano i permessi sugli oggetti Qui si trovano i permessi sugli oggetti Northwind..sysprotectsNorthwind..sysprotects id uid action protecttype 205

48 Kerberos e Delegation Kerberos è un protocollo di autenticazione supportato in Windows Server 2003 Kerberos è un protocollo di autenticazione supportato in Windows Server 2003 Molto più sicuro di NTLM Molto più sicuro di NTLM Necessario per supportare la delegation Necessario per supportare la delegation La capacità di far fare alle credenziali di un client più hop di rete La capacità di far fare alle credenziali di un client più hop di rete Windows 2003 può limitare l'uso di delegation applicazione per applicazione Windows 2003 può limitare l'uso di delegation applicazione per applicazione A Server2 arriva MIESTAFF\raffaele Client EUROPE \ raffaele Server1 Server2

49 Kerberos e SQL Server Supporto al modello di autenticazione di Win2K, Kerberos: Supporto al modello di autenticazione di Win2K, Kerberos: Durante la fase di logon SQL esegue una richiesta di validazione tramite SSPI (security integrata) Durante la fase di logon SQL esegue una richiesta di validazione tramite SSPI (security integrata) Per tutte le connessioni con linked server vengono utilizzate le vere credenziali del client Per tutte le connessioni con linked server vengono utilizzate le vere credenziali del client Deve essere un dominio nativo Win2000 con AD Deve essere un dominio nativo Win2000 con AD Gli account devono essere settati per supportare la delegation Gli account devono essere settati per supportare la delegation Il server deve essere settato in AD per supportare la delegation Il server deve essere settato in AD per supportare la delegation Occorre registrare in AD il Service Principal Name per lutente con il quale gira SQL Server Occorre registrare in AD il Service Principal Name per lutente con il quale gira SQL Server Utilizzare lutility setspn nel ResourceKit di W2K Utilizzare lutility setspn nel ResourceKit di W2K

50 Network Security Occorre configurare il certificato utilizzando Internet Explorer Occorre configurare il certificato utilizzando Internet Explorer O lapplet di gestione dei certificati O lapplet di gestione dei certificati Attenzione al nome DNS fully-qualified durante la richiesta del certificato Attenzione al nome DNS fully-qualified durante la richiesta del certificato Per criptare le comunicazioni client/server basta settare la checkbox nella client network utility e nella server network utility Per criptare le comunicazioni client/server basta settare la checkbox nella client network utility e nella server network utility Se il certificato non è trusted dal client la connessione fallisce Se il certificato non è trusted dal client la connessione fallisce [Microsoft][ODBC SQL Server Driver][DBNETLIB]Encryption not supported on SQL Server

51 Auditing È possibile attivare lauditing attraverso una stored procedure È possibile attivare lauditing attraverso una stored procedure create proc p_audittrace with encryption as create proc p_audittrace with encryption as Exec output, 2, nd:\temp\mytrace.trc, 500 Exec output, 2, nd:\temp\mytrace.trc, 500 Aggiungere gli eventi che interessa catturare Aggiungere gli eventi che interessa Ed eventualmente farle partire in autostart insieme a SQL Server Ed eventualmente farle partire in autostart insieme a SQL Server Exec sp_procoption p_audittrace, startup, on Exec sp_procoption p_audittrace, startup, on

52 Extended Stored Procedure Queste ad esempio consentono di eseguire query nel contesto di sicurezza del servizio Queste ad esempio consentono di eseguire query nel contesto di sicurezza del servizio xp_execresultset, xp_printstatements, xp_displayparamstmt xp_execresultset, xp_printstatements, xp_displayparamstmt Eventualmente, rimuovere quelle che non servono Eventualmente, rimuovere quelle che non servono Il rischio è di perdere alcune funzionalità ad esempio nei tool di amministrazione Il rischio è di perdere alcune funzionalità ad esempio nei tool di amministrazione Testare prima su una macchina non di produzione Testare prima su una macchina non di produzione

53 Security Best Practices -- Chiunque può creare il job EXEC = = = = 1 -- Chiamo un extended SP che ha un buco di sicurezza EXEC = = 'Exec my = = 'exec master..xp_execresultset N''select ''''exec master..xp_cmdshell "dir > c:\agent-job- results.txt"'''''',N''Master''' EXEC = = 'SERVER_NAME' -- Eseguo il job e il gioco è fatto EXEC = 'GetSystemOnSQL'

54 Security Best Practices Replication Replication Su un distributor è possibile eseguire privilege escalation attraverso la SP sp_MScopyscript che di default è accessibile al ruolo public Su un distributor è possibile eseguire privilege escalation attraverso la SP sp_MScopyscript che di default è accessibile al ruolo public Internamente richiama xp_cmdshell per eseguire la copia di un file di script sui subscribers, ma anche di eseguire comandi di sistema operativo Internamente richiama xp_cmdshell per eseguire la copia di un file di script sui subscribers, ma anche di eseguire comandi di sistema operativo Es. creare un utente e farlo diventare Administrator Es. creare un utente e farlo diventare Administrator Configurare il servizio con un account che non abbia privilegi amministrativi e sulla rete (può essere utile anche per i backup schedulati) Configurare il servizio con un account che non abbia privilegi amministrativi e sulla rete (può essere utile anche per i backup schedulati)

55 Security Best Practices -- Il codice interno alla SP = N'copy "' + N'" "' + N'"' = NO_OUTPUT -- Utilizzo non proprio legale della SP use master nvarchar(4000) exec sp_MScopyscriptfile N'c:\autoexec.bat" c:\cp.txt&echo hello > c:\ccc.bbb & echo OUTPUT

56 Eseguire SQL dinamico Il codice SQL eseguito internamente ad una stored proc viene eseguito nel contesto di sicurezza dellesecutore e non dellowner Il codice SQL eseguito internamente ad una stored proc viene eseguito nel contesto di sicurezza dellesecutore e non dellowner Protegge da tentativi di eseguire operazioni non permesse Protegge da tentativi di eseguire operazioni non permesse Es. Es. Create proc nvarchar(500) as Create proc nvarchar(500) as Exec return 0 Exec myproc sp_addlogin raffaele exec sp_addsrvrolemember raffaele,sysadmin e io sarei sysadmin… e io sarei sysadmin…

57 Meta Data Obfuscation Capacità di poter nascondere cifrandole: Capacità di poter nascondere cifrandole: Stored procedure Stored procedure Trigger Trigger View View Non è possibile utilizzarla per altri scopi Non è possibile utilizzarla per altri scopi Es. dati Es. dati Previene la copia delle logiche applicative Previene la copia delle logiche applicative

58 Sviluppo e security SQL Injection consente allinstruso di SQL Injection consente allinstruso di Fare seri danni ai dati Fare seri danni ai dati Sfruttare altre vulnerabilità per ottenere privilegi più elevati Sfruttare altre vulnerabilità per ottenere privilegi più elevati Creare nuovi utenti nel server Creare nuovi utenti nel server Ottenere laccesso a dati protetti Ottenere laccesso a dati protetti Modificare o cancellare oggetti nel database Modificare o cancellare oggetti nel database Se laccount con il quale viene eseguito il servizio SQL Server ha privilegi amministrativi sul server Se laccount con il quale viene eseguito il servizio SQL Server ha privilegi amministrativi sul server Lintruso li può acquisire ed utilizzare il server come base per altri attacchi Lintruso li può acquisire ed utilizzare il server come base per altri attacchi

59 Security Best Practices SQLXML [Q321911] SQLXML [Q321911] Sono possibili due tipi di attacchi Sono possibili due tipi di attacchi Buffer overrun sulla estensione ISAPI Buffer overrun sulla estensione ISAPI Script injection attraverso un tag XML che consente lesecuzione di codice durante una trasformazione XSLT Script injection attraverso un tag XML che consente lesecuzione di codice durante una trasformazione XSLT Disabilitare la possibilità di eseguire query dirette via HTTP (di default è così) Disabilitare la possibilità di eseguire query dirette via HTTP (di default è così) Utilizzare piuttosto la tecnica dei template XML per eseguire laccesso ai dati Utilizzare piuttosto la tecnica dei template XML per eseguire laccesso ai dati


Scaricare ppt "Raffaele Rialdi Microsoft C# MVPhttp://mvp.support.microsoft.com MVP Profilehttp://snipurl.com/f0cv Bloghttp://blogs/ugidotnet.org/raffaele"

Presentazioni simili


Annunci Google