Sicurezza Nei DataBase Sicurezza - UniGe

Transcription

Sicurezza nei DataBaseSicurezzazQuando si parla di Sicurezza Informaticavengono coinvolti tre aspetti molto importantidi qualsiasi sistema informatico:riservatezza, integrità e disponibilità.Alessandro Ferrante / Giorgio GamberiniLaboratorio di Basi di Dati 2Alessandro Ferrante / Giorgio Gamberini - Sicurezza nei DataBaseSicurezza2Sicurezza nei DataBasePer quanto riguarda i DB possiamoidentificare i seguenti requisiti di ificabilitàRiservatezzaAutenticazione utenteDisponibilitàDISPONIBILITÀAlessandro Ferrante / Giorgio Gamberini - Sicurezza nei DataBase3Sicurezza nei DataBasezzzzzzVerificabilitàDeve essere possibile rintracciare chi o che cosa ha eseguitol’accesso agli elementi del DB.Soluzione:z Generare un record di verifica di tutti gli accessizRiservatezzaUn utente deve poter avere accesso solo ai dati autorizzati nellemodalità autorizzateSoluzione:z Controllo degli accessiProblema:z Inferenza dei datiBackup periodiciRegistro delle transazioniIntegrità dell’elementoImplica la correttezza/accuratezza dell’elemento. Sia utenti cheprogrammi possono compiere errori nell’inserimento/modifica dei dati.Soluzione:zControlli di campo (correttezza dell’elemento)Controllo degli accessiRegistro delle modificheAlessandro Ferrante / Giorgio Gamberini - Sicurezza nei DataBase4Sicurezza nei DataBaseIntegrità del DBInclude sia l’integrità fisica che logica. La struttura del DB deve essereconservata ed i dati devono essere protetti dal danneggiamento.Soluzione:zAlessandro Ferrante / Giorgio Gamberini - Sicurezza nei DataBase5Alessandro Ferrante / Giorgio Gamberini - Sicurezza nei DataBase61

Sicurezza nei DataBasezzIntegritàAutenticazione utenteOgni utente deve essere identificatoSoluzione:z Autenticazione utente rigorosa (password, smartcard,caratteristiche biometriche)zzDisponibilitàGli utenti devono avere accesso al DB in generale e a tutti i datidi cui dispongono l’autorizzazioneAlessandro Ferrante / Giorgio Gamberini - Sicurezza nei DataBasez7IntegritàzzzBit di paritàCodici di HammingCodici di ridondanza ciclica (CRC)Alessandro Ferrante / Giorgio Gamberini - Sicurezza nei DataBase9Dati sensibilizzzzAlessandro Ferrante / Giorgio Gamberini - Sicurezza nei DataBase8zAccesso concorrenteI DB sono sistemi multiutente: bisogna vincolare gli accessi dellepersone che condividono lo stesso DB.Soluzione: il DBMS gestisce l’intero ciclointerrogazione/aggiornamento con una singola operazioneatomicazMonitorUtilità del DBMS responsabile dell’integrità strutturale del DB.z Confronto dell’intervalloz Vincoli di statoz Vincoli di transizioneAlessandro Ferrante / Giorgio Gamberini - Sicurezza nei DataBase10Sicurezza e precisioneI dati sensibili sono quelli che non dovrebberoessere resi pubbliciDecidere cosa è sensibile è complesso poiché icampi possono venire interessati in manieraindirettaPer ragioni di riservatezza sarebbe necessariodivulgare solo di dati non sensibiliPrecisione: si mira a proteggere i dati sensibili purrivelando la maggior quantità possibile di dati nonsensibiliAlessandro Ferrante / Giorgio Gamberini - Sicurezza nei DataBaseFase 1 – Intento:Il DBMS raccoglie le risorse necessarie per eseguirel’aggiornamento senza però apportare alcuna modifica alDB. Scrive un flag di commit.Fase 2 – Commit:Esegue le modifiche. I valori ombra creati nella prima fasevengono copiati nel DB. Viene rimosso il flag di commit.IntegritàRidondanza / Coerenza internaMolti DBMS mantengono informazioni aggiuntiveper rilevare incoerenze interne dei dati:zAggiornamento in due fasiProblema: malfunzionamento del sistema durante lamodifica dei datitàiliibnsSeNascondere permassima sicurezzaRivelare permassima precisioneNascostoNon può essere dedottoPuò essere dedotto dalle queryDivulgato liberamente11Alessandro Ferrante / Giorgio Gamberini - Sicurezza nei DataBase122

InferenzazzInferenzaCognomeVulnerabilità nella protezione dei DBMetodo per dedurre / derivare dati sensibilida dati non sensibiliAlessandro Ferrante / Giorgio Gamberini - Sicurezza nei FA0102GreyMajorsMC200002GreyAlessandro Ferrante / Giorgio Gamberini - Sicurezza nei DataBasez14Attacco indirettoCerca di dedurre il risultato finale sulla base di uno o piùrisultati statistici intermediz SommaSomma degli aiuti finanziari per dormitorio e sessoCognomeSesso M AND Droghe 1Tentativo di rendere meno ovvio l’attacco:SELECTWHERERazzaCInferenzaAttacco direttoSELECTWHERESessoMHolmesCognome(Sesso M AND Droghe 1) AND(Sesso ! M AND Sesso ! F) AND(Dorm 000120003000800023000TotaleLiu non riceveaiuti finanziariAlri attacchi indiretti sono solitamente basati su:z Conteggio, mediana, sistemi lineariAlessandro Ferrante / Giorgio Gamberini - Sicurezza nei DataBase15InferenzazzApplicare controlli alle queryzSoppressione: i valori dei dati sensibili non vengono fornitiOccultamento: il valore fornito è vicino a quello effettivo Combinazione dei risultati, arrotondamento, perturbazione casualeAlessandro Ferrante / Giorgio Gamberini - Sicurezza nei DataBaseGrayWestTotaleM131F2136Totale344115I dati di questa tabella suggeriscono che le celle con conteggi 1dovrebbero essere soppresse perché troppo rivelatori. Inoltre ènecessario sopprimere almeno un’altra rigaApplicare controlli ai datizEsempio soppressione: studenti per dormitorio e sessoHolmesDifficile determinare se una data query divulga datisensibili; efficaci solo contro gli attacchi direttiz16InferenzaSoluzioniEsistono due modi per difendersi dagliattacchi di inferenza:zAlessandro Ferrante / Giorgio Gamberini - Sicurezza nei Alessandro Ferrante / Giorgio Gamberini - Sicurezza nei DataBase5183

InferenzazDatabase a più livelliEsempio occultamento: studenti per sesso e utilizzo droghe012M1112F2220Per occultare queste informazioni sensibili è possibile combinare ivalori degli attributi 0 e 1, e anche 2 e 3, producendo dati menosensibili0o1zz2o3M23F4219Database a più livelliAlessandro Ferrante / Giorgio Gamberini - Sicurezza nei DataBasezIl DB è diviso in DB separati ciascuno con un proprio livello disensibilità.CrittografiazBlocco integritàzzDatoSensibilità20Front end trustedPartizionamentozLa sicurezza di un singolo elemento può esserediversa dalla sicurezza di altri elementi dello stessorecordÆ Occorre implementare la protezione per ognisingolo elementoDue livelli di sensibilità non sono adeguatiÆ Occorre implementare vari gradi di sicurezzaLa sicurezza di un’aggregazione può esseredifferente dalla sicurezza dei singoli elementiÆ Modello militare di sicurezza: sensibilità di unoggetto è definita da n livelliAlessandro Ferrante / Giorgio Gamberini - Sicurezza nei DataBasezz3ChecksumzIl blocco dell’integrità è stato inventato come soluzione abreve termine al problema della sicurezza per i DB a piùlivelli. Tuttavia lo spazio per archiviare i dati deve essereaumentato per contenere l’etichettaIl concetto di Front End sfrutta l’esperienza e gli strumentiesistenti migliorando la sicurezza di essi con modificheminime al sistemaIl Front End Trusted serve come filtro unidirezionalescartando i risultati a cui l’utente non dovrebbe accedereNon è efficiente perché vengono recuperati più dati delnecessarioIndicatore sensibilitàChecksumAlessandro Ferrante / Giorgio Gamberini - Sicurezza nei DataBase21Front end trustedUtenti1.2.3.4.5.6.Front endtrustedDBMS22Filtri commutativiControlleraccessozSemplificazione del Front end trustedzIl filtro analizza la richiesta dell’utente, quindi la riformatta in modo da restituiresolo i dati con il livello di sensibilità appropriatoLa query:SELECTWHEREDBsensibileCognomeSesso M AND Droghe 1Diventa:SELECTCognomeWHERESesso M AND Droghe 1FROM ALL RECORDS RWHERE(Livello segretezza sesso(R) Livello segretezza utente)AND(Livello segretezza droghe(R) Livello segretezza utente)Utente si identifica con il front endUtente invia query al front endFront end verifica l’autorizzazione e invia la query al DBMSIl DBMS interagisce col controller dell’accesso a basso livello ed accede ai datieffettiviIl DBMS restituisce il risultato al Front endIl Front end analizza i livelli di sensibilità dei dati nel risultato e seleziona glielementi coerenti con il livello di protezione dell’utenteAlessandro Ferrante / Giorgio Gamberini - Sicurezza nei DataBaseAlessandro Ferrante / Giorgio Gamberini - Sicurezza nei DataBasez23Il filtro fornisce quindi una seconda valutazione per selezionare solo i dati cuil’utente ha accessoAlessandro Ferrante / Giorgio Gamberini - Sicurezza nei DataBase244

Database distribuitizzSicurezza in OracleIl Front end trusted controlla l’accesso a due DBMS commerciali:uno per i dati a bassa sensibilità e uno per quelli ad altasensibilitàPer un utente con livello di autorizzazione per dati ad altasensibilità, il front end invia la query ad entrambi i DBMSUtentiFront rolleraccessoDBAlessandro Ferrante / Giorgio Gamberini - Sicurezza nei DataBaseAlessandro Ferrante / Giorgio GamberiniUtentizzzzUtentiogni versione di oracle include nuovefunzionalità a cui corrispondono nuovi utentil'installazione di oracle 9i COMPLETA creapiù di 20 utentispesso non vengono utilizzati e le passwordnon vengono cambiatealcuni di questi hanno privilegi molto altiAlessandro Ferrante / Giorgio Gamberini - Sicurezza nei DataBaseLaboratorio di Basi di Dati 225zinstallare solo le opzioni strettamentenecessarie all'utilizzo del database e bloccoaccount non utilizzatiALTER USER username ACCOUNT LOCK;zcambiare la password (che spesso è identicaall'username)ALTER USER username IDENTIFIED BY {new password};27Alessandro Ferrante / Giorgio Gamberini - Sicurezza nei DataBasePrivilegi utentiEsempio privilegiIl DBA assegna a ogni utente creato dei privilegi che sono:GRANT system privilege TO {user name role PUBLIC}[WITH ADMIN OPTION];GRANT {object priv ALL} [ (column1,.) ] ON objectTO {user role PUBLIC} [WITH GRANT OPTION]zprivilegi di sistemapermettono all’utente di connettersi al database e creareo manipolare oggettizi privilegi di oggettopermettono all’utente l’accesso ai dati contenutinell’oggetto o permettono all’utente di eseguire unprogramma memorizzato.Alessandro Ferrante / Giorgio Gamberini - Sicurezza nei DataBase2928GRANT create session TO user(dovrebbe essere l’unico privilegio di sistema per l’utente,permette di accedere al db)GRANT select ON oggetto to user(permette select su oggetto per l’user)Alessandro Ferrante / Giorgio Gamberini - Sicurezza nei DataBase305

Esempio privilegiMeccanismi di autenticazioneUn utente in un sistema Oracle viene riconosciuto daun nome utente ed una passwordDi default Oracle non attiva nessuna direttivaparticolare per il controllo della passwordcon l’opzione WITH ADMIN OPTION si puoconcedere all’utente non solo il privilegio maanche la possibilità di concedere lo stessoprivilegio ad altri utentiLa complessità (per esempio lunghezza) non è testataUn utente può sbagliare la password un numeroindefinito di volte senza essere bloccatova evitatasi perde il controllo del privilegioAlessandro Ferrante / Giorgio Gamberini - Sicurezza nei DataBase31Enterprise ManagerAlessandro Ferrante / Giorgio Gamberini - Sicurezza nei DataBase32Enterprise ManagerTool di Oracle che permette:z cambio password periodico,z se password non modificata l'utente viene bloccato,z riutilizzo password solo dopo X giorni,z dopo X insuccessi la password viene bloccata . oppure creare una propria funzione PL/SQL percui e possibile aggiungere ulteriore sicurezzaAlessandro Ferrante / Giorgio Gamberini - Sicurezza nei DataBase33Data dictionary34Data dictionaryIl data dictionary è fondamentalmente unaregistrazione interna dello stato di tutti glioggetti del database: tabelle, utenti, indici,sequenze, viste, link a database, ecc.zzPossiamo definirlo come un dizionario di“metadati”, cioè dati che descrivono glioggetti nel database.Alessandro Ferrante / Giorgio Gamberini - Sicurezza nei DataBaseAlessandro Ferrante / Giorgio Gamberini - Sicurezza nei DataBase3507 DICTIONARY ACCESSIBILITY parametro nelfile di configurazione init sid .oraTRUE gli utenti con privilegio sistema %ANY%possono a seconda del privilegioleggere,modificare,eseguire gli oggetti nel D.D.FALSE (default da oracle9i) gli utenti con privilegiodi sistema %ANY% nn hanno accesso al D.D. masolo il SYSDBA.E’ comunque possibile distribuire privilegi suglioggtti del D.D.Alessandro Ferrante / Giorgio Gamberini - Sicurezza nei DataBase366

ReteReteMA .sql*net trasferisce in “chiaro” i datiOracle, per l’accesso ai database, supportadiversi protocolli quali TCP/IP, SPX, DECnete reti eterogenee, seguendo un modellodi computazione client (sql*net ) server(listener db).Alessandro Ferrante / Giorgio Gamberini - Sicurezza nei DataBasenon è possibile rilevare se un pacchetto direte sia stato intercettato e/o modificatodurante il transito in rete.37RetezzzAlessandro Ferrante / Giorgio Gamberini - Sicurezza nei DataBaseAdvanced SecuritySecure Socket Layer (SSL) (protocollo standardper la sicurezza delle connessioni di rete)Kerberos e CyberSafe: (protocollo diautenticazione dei servizi di rete, si serve dellacrittografia a chiave segreta)permette di scegliere i metodi di crittografiada utilizzare, si possono impostare indirizzi ipaccettati, indirizzi rifiutati, porte utilizzateparametri nel file protocol.ora:tcp.validnode checking YEStcp.excluded nodes {list of ip address}tcp.invited nodes {list of ip address}Smart Cards (dispositivi fisici simili ad unacarta di credito)Alessandro Ferrante / Giorgio Gamberini - Sicurezza nei DataBase39AuditingAlessandro Ferrante / Giorgio Gamberini - Sicurezza nei DataBase40AuditingProcesso che offre la possibilità di monitoraree registrare le attività all’interno del database.in Oracle la funzione di AUDIT TRAILpermette la registrazione di qualsiasi attività,ma non è possibile effettuare unmonitoraggio a livello riga è possibile scrivere del codice PLSQLzzzzzAlessandro Ferrante / Giorgio Gamberini - Sicurezza nei DataBase3841In init sid .ora :AUDIT FILE DEST: specifica directory in cuile informazioni saranno memorizzateAUDIT TRAIL: abilita o disabilita l’auditing .Valori usati:NONE (default)l’auditing non sarà abilitatoOS i risultati saranno scritti in un file presente nelladirectory AUDIT FILE DEST.DB i risultati di auditing saranno conservati nella tabellaSYS.AUD .Alessandro Ferrante / Giorgio Gamberini - Sicurezza nei DataBase427

AuditingBackupOracle permette tre tipi di controllo rivolti a:z statement SQL specifici (connect, create table,);z privilegi (system grant, ecc);z operazioni (select, insert, alter, ecc) sugli oggetti deiOracle.AUDIT [option ALL] ON [username.]objectname[BY [SESSION ACCESS]][WHENEVER [NOT] SUCCESSFUL]zAlessandro Ferrante / Giorgio Gamberini - Sicurezza nei DataBaseAlessandro Ferrante / Giorgio Gamberini - Sicurezza nei DataBase43Backupzzzz44PL-SQLExport/Import: due utility di Oracle chepermettono di esportare ed importare l’interocontenuto logico (tabelle,viste, ecc.) di unoo più schemi in un unico file;Off-line backup: si effettua quando si arrestail database. E’ una copia fisica di tutti i file;On-line backup: con database attivo simettono i tablespace nello stato di backup esi effettua la copia dei loro file di redo log econtrolAlessandro Ferrante / Giorgio Gamberini - Sicurezza nei DataBaseI backup possono essere divisi in duecategorie principali:backup fisici, sono copie dei file fisici deldatabasebackup logici, contengono dati esportatiusando comandi sql e memorizzati in un filebinario.Programmi scritti in PL/SQL1 possono essere memorizzati in formacompilata all’interno del databasefile funzioni sono eseguite da unachiamata esplicita (non c’ e quindi trasparenza):EXECUTE nome funzione(param);eseguite con i privilegi del proprietario (colui che ha creatolaprocedura o funzione)Per fare in modo che una procedura possa essere eseguita con idiritti del chiamante (invoker-rights) e sufficiente aggiungere unparametro opzionale AUTHID CURRENT USER alla suadichiarazione45Aggiornamenti webAlessandro Ferrante / Giorgio Gamberini - Sicurezza nei DataBase46BibliografiazPeriodicamente visitare l’indirizzo web diOracle per valutare possibili vulnerabilità edapplicare le opportune patch:z“Sicurezza in informatica” tn.oracle.com/deploy/security/alertAlessandro Ferrante / Giorgio Gamberini - Sicurezza nei DataBase47Alessandro Ferrante / Giorgio Gamberini - Sicurezza nei DataBase488

Utilità del DBMS responsabile dell'integrità strutturale del DB. zConfronto dell'intervallo zVincoli di stato zVincoli di transizione Alessandro Ferrante / Giorgio Gamberini - Sicurezza nei DataBase 11 Dati sensibili zI dati sensibili sono quelli che non dovrebbero essere resi pubblici zDecidere cosa è sensibile è complesso poiché i