Nessun risultato. Prova con un altro termine.
Guide
Notizie
Software
Tutorial

Una check-list per la sicurezza di SQL Server

Un elenco di misure di sicurezza da applicare sempre
Un elenco di misure di sicurezza da applicare sempre
Link copiato negli appunti

Una implementazione ideale di SQL Server in un sistema operativo Windows
NT/2000 contempla l'applicazione delle seguenti misure di sicurezza:

  • restringere l'accesso fisico al sistema che ospita il processo SQL Server al
    fine di eliminare la possibilità di far partire il server mediante l'uso di un
    floppy disk guadagnando in tal modo l'accesso indiscriminato al file system;
  • installare sul sistema un antivirus e mantenerne costantemente aggiornati i
    file delle definizioni;
  • utilizzare sempre il file system NTFS poichè quest'ultimo possiede
    caratteristiche di sicurezza e di controllo degli accessi molto avanzate;
  • applicare pemessi NTFS rigorosi a tutti i file dati e di log nonchè ai file
    eseguibili ed alle DLL di SQL Server; in particolare verificare che il controllo
    completo di queste risorse sia garantito soltanto all'account prescelto per far
    partire il servizio SQL Server ed eventualmente agli utenti amministratori (di
    regola queste impostazioni vengono effettuate in automatico dalla procedura di
    installazione del software);
  • proteggere adeguatamente la porta TCP 1433 sulla quale SQL Server rimane in
    ascolto per default da eventuali attacchi esterni ed anche da semplici tentativi
    di scansione;
  • assicurarsi che tutte le condivisioni di sistema siano read-only oppure
    consentirne l'accesso in scrittura in modo molto restrittivo;
  • abilitare l'auditing dei login non soltanto a livello di sistema operativo
    ma anche di SQL Server ed esaminare periodicamente il log degli eventi in modo
    da individuare per tempo gli eventuali tentativi di intrusione;
  • rinominare l'account di amministratore sulla macchina che ospita SQL Server
    ed utilizzare comunque password robuste non basate su dizionario per scoraggiare
    i tentativi di attacco a forza bruta tendenti ad indovinare le password degli
    utenti amministrativi;
  • mantenersi sempre aggiornati con le informazioni riguardanti i service pack
    e le patch di sicurezza rilasciate da Microsoft (http://www.microsoft.com/security);
  • disabilitare l'account guest a livello di sistema operativo ed eliminarlo da
    tutti i database di produzione mediante l'Enterprise Manager oppure con la
    procedura registrata sp_dropuser;
  • proteggere adeguatamente le chiavi del registro di sistema
    HKEY_LOCAL_MACHINESOFTWAREMICROSOFTMSSQLSERVER nel caso di
    una istanza di default oppure
    HKEY_LOCAL_MACHINESOFTWAREMICROSOFTMICROSOFT SQL
    SERVERNOME_ISTANZA
    nel caso di una istanza personalizzata. In
    particolare dai permessi concessi su queste chiavi deve essere rimosso
    completamente il gruppo Everyone mentre il controllo completo
    deve essere attribuito soltanto all'account prescelto per far partire il
    servizio di SQL Server ed eventualmente agli utenti ammistratori (anche di
    queste impostazioni si preoccupa la procedura di installazione del software);
  • utilizzare sempre l'autenticazione Windows al posto di quella mista poichè
    la prima è di per sè più sicura in quanto sfrutta le capacità del sottostante
    strato costituito dal sistema operativo per l'autenticazione delle varie
    richieste di connessione. Nel caso in cui sia invece necessario fare uso
    dell'autenticazione mista è fortemente consigliato impostare una password
    robusta per l'account di login sa. Peraltro questa impostazione
    dovrebbe essere eseguita anche nel caso di autenticazione Windows dal momento
    che è sufficiente una piccola modifica a livello di registro di sistema per
    cambiare la modalità di sicurezza del processo di autenticazione e nel caso in
    cui l'account sa non possieda una password questo comporterebbe per chiunque una
    estrema facilità di accesso a SQL Server;
  • semplificare la gestione delle autorizzazioni degli utenti traendo vantaggio
    dall'uso dei ruoli di database e fixed server oppure creandone di nuovi;
  • scegliere con particolare cura gli utenti ai quali attribuire il ruolo di
    sysadmin poichè quest'ultimo comporta dei poteri pressocchè
    illimitati. A tale proposito la Microsoft raccomanda di garantire a tutti gli
    amministratori di database l'accesso a SQL Server non in modo diretto ma per
    mezzo della loro appartenenza ad un gruppo del sistema operativo conferendo
    successivamente a tale gruppo il ruolo di sysadmin;
  • impostare il servizio di SQL Server in modo che esso venga eseguito nel
    contesto di un account avente il minimo dei privilegi necessari a garantire il
    corretto funzionamento dei processi;
  • in ambienti Web adottare una configurazione di tipo three-thier con il
    database residente su un sistema diverso da quello che ospita l'application
    server;
  • nascondere il servizio SQL Server dalle eventuali richieste di enumerazione
    utilizzando l'opzione /HIDDEN:YES del comando NET CONFIG SERVER del sistema
    operativo;
  • negare il permesso di esecuzione di alcune procedure registrate di sistema
    (ad es. xp_cmdshell) nonchè delle procedure registrate che
    implementano l'automazione OLE a tutti gli utenti/ruoli per i quali esso non sia
    assolutamente necessario;
  • restringere l'accesso diretto degli utenti alle tabelle facendo in modo che
    i dati vengano letti e scritti mediante l'utilizzo di viste e procedure
    registrate. Inoltre evitare, ove non sia strettamente indispensabile,
    l'esecuzione di istruzioni sql dinamiche poichè ciò richiede inevitabilmente
    l'accesso diretto alle tabelle ed introduce dei potenziali rischi;
  • impedire alle applicazioni di accettare ed eseguire incondizionatamente
    stringhe di comandi costruite ad hoc poichè un utente con un minimo di
    conoscenza potrebbe in tal modo guadagnare un accesso illecito a dati sensibili
    (questa tecnica è nota come SQL Injection);
  • proteggere ove necessario il codice delle procedure registrate, dei
    triggers, delle viste e delle funzioni definite dall'utente adottando nelle
    apposite istruzioni sql la clausola WITH ENCRYPTION;
  • nel caso di database contenenti informazioni sensibili potrebbe essere
    opportuno criptare i dati a livello di tabelle facendo uso di librerie di terze
    parti oppure sviluppandone di proprie tramite le CryptoAPI messe a disposizione
    dal sistema operativo;
  • fare uso delle caratteristiche di criptazione del filesystem EFS (Encrypted
    File System) fornite dal sistema operativo Windows 2000 per proteggere le
    cartelle dove risiedono i file di dati e di log della istanza di SQL Server;
  • eseguire periodicamente le opportune procedure di backup dei dati sfruttando
    la possibilità offerta da SQL Server di fornire una password per il backup ed
    assicurando le copie su supporti fisicamente sicuri;

Ti consigliamo anche