I dati sono una risorsa fondamentale per ogni organizzazione e i database scarsamente protetti sono troppo spesso responsabili di violazioni della sicurezza. Questo articolo descrive in dettaglio le best practice per la sicurezza del server SQL, nonché le considerazioni essenziali sulla sicurezza per proteggere i database da attacchi dannosi.
La sicurezza dei dati comprende tre pilastri essenziali:riservatezza, integrità e disponibilità (CIA) e si occupa di processi specifici per proteggere i dati dall'accesso intenzionale e accidentale. Analizziamo le diverse aree e passaggi da intraprendere quando ci si avvicina alla sicurezza di SQL Server, uno dei database relazionali più diffusi oggi in uso.
Best practice per la sicurezza di SQL Server
1. Garantisci la sicurezza fisica del tuo SQL Server
Quando si tratta di sicurezza di SQL Server, la sicurezza fisica non può essere trascurata. La sicurezza fisica si riferisce alla limitazione dell'accesso non autorizzato ai data center o ad altri componenti fisici del server. Ad esempio, puoi implementare una stanza chiusa a chiave con accesso limitato utilizzando una smart card, un'impronta digitale o il riconoscimento facciale. Puoi anche configurare un segmento di rete limitato per SQL Server.
I data center ospitano l'infrastruttura di un'organizzazione come router, switch, server, firewall e dispositivi di archiviazione. La sicurezza fisica si occupa della protezione dell'hardware, del software e della rete da accessi non autorizzati o calamità naturali. Può interessare le seguenti aree:
- Garantire l'accesso ai locali e alle apparecchiature solo per il personale autorizzato
- Mantenimento dei sistemi di controllo accessi
- Vigilanza 24x7x365 tramite guardie di sicurezza in loco o monitoraggio CCTV
- Gruppo di continuità (UPS)
- Disporre di un sistema di allarme antincendio e di un sistema di rilevazione fumi ad aspirazione
- Disporre di un pannello rilevatore di perdite d'acqua attivo
- Sistemi repellenti per roditori
- Sistemi antincendio
- Controllo e monitoraggio della temperatura e dell'umidità
- Manutenzione hardware periodica
2. Proteggi il tuo sistema operativo
SQL Server viene installato su un sistema operativo esistente come Windows o Linux. Pertanto, la sicurezza del sistema operativo svolge un ruolo fondamentale nella sicurezza di SQL Server. Di seguito sono riportati alcuni consigli per la protezione del sistema operativo:
- Applica patch di sicurezza e service pack regolari del sistema operativo
- Definisci una politica di patching del sistema operativo che applichi le patch agli ambienti inferiori seguite dall'applicazione di patch di produzione
- Utilizzare sempre versioni stabili e supportate del sistema operativo del prodotto. Ad esempio, Microsoft ha interrotto il supporto per Windows Server 2003, pertanto non dovresti usarlo per l'hosting di database
- Non consentire l'accesso a Internet sui server del database
- Dovresti disinstallare, interrompere o disabilitare le applicazioni e le unità inutilizzate per garantire meno vie per potenziali attacchi
- Implementare un firewall con accesso limitato ai server di database in modo che solo i server delle applicazioni che richiedono l'accesso al server di database possano passare il traffico dai firewall
- Apri porte specifiche nel firewall. Ad esempio, per impostazione predefinita, SQL Server viene eseguito sulla porta 1433. Pertanto, è possibile consentire la porta TCP 1433 e 3389 per l'accesso al server remoto se nessun'altra applicazione è in esecuzione sul server. Allo stesso modo, il servizio di analisi utilizza la porta predefinita 2383 come porta standard. Per un elenco completo delle porte in SQL Server, fai riferimento a questa documentazione sulle porte utilizzate da SQL Server. È inoltre possibile utilizzare certificati SSL o TLS per proteggere l'accesso a SQL Server. Questi certificati possono crittografare il trasferimento di dati tra SQL Server e le applicazioni client. La configurazione di SQL Server è necessaria per un certificato autofirmato o per il certificato emesso dall'autorità di certificazione (CA). Puoi fare riferimento all'articolo: Come impostare e utilizzare connessioni crittografate di SQL Server per maggiori dettagli.
- Sfrutta l'opzione Protezione estesa per l'autenticazione per prevenire un attacco di inoltro dell'autenticazione utilizzando l'associazione del servizio e l'associazione del canale. Per abilitare la protezione estesa, vai a Gestione configurazione SQL Server, espandi lo schermo, fai clic con il pulsante destro del mouse su Protocolli e quindi vai su Protezione avanzata, estesa. Nota, per impostazione predefinita, questa opzione è disattivata.
Allo stesso modo, puoi forzare la connessione crittografata a SQL Server utilizzando l'opzione seguente.
Puoi anche fare riferimento alla protezione estesa per maggiori dettagli.
3. Riduci la tua superficie
La superficie di SQL Server comprende funzionalità del motore di database che forniscono funzionalità aggiuntive come l'invio di posta elettronica. Questi componenti potrebbero essere un potenziale obiettivo per ottenere l'accesso a SQL Server per attività dannose. Pertanto, è necessario disabilitare il componente e le funzionalità di SQL Server che non vengono utilizzati, poiché ciò limiterà le possibilità di un potenziale attacco. I componenti principali che puoi rivedere e disabilitare sono elencati di seguito.
- Cerca i processi di avvio
- Procedure di automazione OLE
- CLR abilitato
- Concatenamento di proprietà del database incrociato
- xp_cmdshell
- XP di posta del database
Puoi fare riferimento a questo articolo per informazioni dettagliate sulle opzioni di configurazione del server.
4. Configura un server per l'ascolto su una porta diversa
Microsoft SQL Server utilizza la porta predefinita 1433 per tutte le connessioni al database. È un rischio per la sicurezza comune in molti ambienti di database poiché i professionisti del database in genere non modificano la porta predefinita. È una porta ben nota e gli intrusi possono sfruttare questa opportunità per accedere a SQL Server. Pertanto, è necessario utilizzare una porta non predefinita per rafforzare la protezione di SQL Server. Puoi modificarlo utilizzando Gestione configurazione SQL Server.
5. Regola l'autenticazione di SQL Server
La protezione dei tuoi dati dipende dalla capacità di autenticare l'accesso a dati specifici. SQL Server offre due opzioni per l'autenticazione del database.
- Autenticazione Windows
- Autenticazione Windows e SQL (modalità mista)
Per verificare il modello di autenticazione del server, fare clic con il pulsante destro del mouse sull'istanza di SQL Server e passare a Sicurezza.
L'autenticazione di Windows utilizza account di Active Directory per le autenticazioni. È possibile disporre di un controllo centralizzato dei criteri per la complessità delle password, la scadenza delle password, il blocco degli account e i gruppi di Active Directory nell'Active Directory. Pertanto, dovresti usare l'autenticazione di Windows invece dell'autenticazione di SQL Server. Qui l'utente si connette usando un account Windows e SQL Server convalida le credenziali usando il token principale di Windows. Utilizza il protocollo di sicurezza Kerberos per le autenticazioni. Fare riferimento alla modalità di autenticazione per maggiori dettagli.
Tuttavia, se è necessario utilizzare gli accessi di SQL Server, è comunque possibile applicare i criteri relativi alle password come evidenziato di seguito.
6. Ricorda le autorizzazioni dell'account di servizio
SQL Services utilizza un account Windows per eseguire i propri servizi. Non utilizzare gli account integrati con privilegi elevati come Servizio di rete o Sistema locale. Allo stesso modo, per un account di servizio di dominio, dovresti assegnare privilegi appropriati per il ruolo.
Pertanto, ti consiglio di fare riferimento a configurare gli account di servizio e le autorizzazioni di Windows per ulteriori dettagli sulle autorizzazioni degli account di servizio di SQL Server.
7. Applicare le patch di SQL Server in produzione
Microsoft rilascia Service Pack regolari (SQL Server 2016 o versioni precedenti) e pacchetti cumulativi (da SQL Server 2017 in poi) per la risoluzione di problemi noti e problemi di sicurezza. Pertanto, dovresti sempre pianificare di implementare l'applicazione di patch di SQL Server nelle istanze di produzione. Tuttavia, non applicare direttamente le patch alle istanze di produzione. Applicali sempre prima nell'ambiente di test, convalida e pianifica la distribuzione in produzione.
Puoi fare riferimento agli ultimi aggiornamenti per Microsoft SQL Server per trovare dettagli sugli ultimi service pack e cumulativi.
8. Proteggi i tuoi backup
Quando si tratta di sicurezza di SQL Server, la protezione dei backup è fondamentale. In genere, i professionisti del database non considerano tutti i requisiti per la protezione dei backup del database. Il backup del database è il processo di creazione di una copia dello stato operativo, dell'architettura e dei dati archiviati di un database. Pertanto, è altrettanto importante proteggerlo. Significa limitare l'accesso ai file di backup e crittografarli correttamente. Quando si tratta di proteggere i backup, ecco alcuni promemoria.
- Non fornire a tutti i diritti sulla cartella di backup per creare, visualizzare, modificare ed eliminare i file di backup
- Utilizza backup di database con crittografia; fare riferimento a questo articolo sulla crittografia del backup per maggiori dettagli
9. Ricorda le tecniche di crittografia e mascheramento dei dati di SQL Server
Un'area chiave nella sicurezza di SQL Server è la crittografia. È possibile utilizzare vari meccanismi di crittografia per proteggere i dati sensibili nel database di SQL Server. Le diverse opzioni di crittografia sono le seguenti.
- Sempre crittografato:la tecnica sempre crittografata aiuta a crittografare i dati sensibili all'interno delle applicazioni client. Il driver sempre abilitato crittografa e decrittografa automaticamente i dati sensibili nelle applicazioni client. Le chiavi di crittografia non vengono mai rivelate al motore di database di SQL Server. Protegge i dati riservati.
- Crittografia dei dati trasparenti (TDE):il TDE crittografa i dati inattivi. Aiuta a proteggere i file di dati, i file di registro ei file di backup.
- Crittografia a livello di colonna:la crittografia a livello di colonna aiuta a crittografare dati di colonna specifici, ad esempio numeri di carta di credito e numeri di previdenza sociale.
- Mascheramento statico dei dati:il mascheramento statico dei dati sostituisce i dati sensibili utilizzando le regole di trasformazione dei dati definite.
- Mascheramento dinamico dei dati:il mascheramento dinamico dei dati aiuta a limitare l'esposizione dei dati sensibili agli utenti non privilegiati.
- Sicurezza a livello di riga:la sicurezza a livello di riga limita l'accesso alla riga di dati.
10. Rendi complicata la password dell'amministratore di sistema
Se si utilizza l'autenticazione SQL, viene creata una SA di accesso con le autorizzazioni di amministratore di sistema. Per salvaguardare il tuo SQL Server, procedi come segue.
- Rinomina il login denominato SA con un nome diverso
- Disabilita l'account se non prevedi di utilizzarlo
- Utilizza una password complessa
- Non consentire alle applicazioni di utilizzare l'account SA nelle stringhe di connessione
11. Controlla gli accessi al database
Il controllo è spesso trascurato quando si tratta di sicurezza di SQL Server. È necessario eseguire regolarmente il controllo di SQL Server per gli accessi non riusciti. È possibile utilizzare il meccanismo di controllo dell'accesso predefinito per la revisione degli account. Si supponga, ad esempio, che un utente stia tentando di connettersi a SQL Server con un account con privilegi elevati. In tal caso, è possibile visualizzare l'errore di accesso e l'indirizzo IP della richiesta in entrata (client). Questo può aiutarti a catturare ed eliminare attività sospette.
È possibile utilizzare gli eventi estesi, la traccia SQL, l'acquisizione dei dati di modifica, i trigger (DDL, DML o accesso), le specifiche di controllo a livello di database o server per l'audit di SQL Server.
12. Presta attenzione alle autorizzazioni a livello di server e database
I professionisti del database dovrebbero prestare attenzione quando assegnano autorizzazioni a livello di server o di database. A volte, vediamo che gli sviluppatori ottengono sysadmin a livello di server o le autorizzazioni del proprietario del database a livello di database. Queste sono le autorizzazioni più alte che un utente può avere rispettivamente a livello di istanza o database.
- Fai riferimento a ruoli fissi a livello di server per comprendere i ruoli fissi a livello di server e le relative capacità.
- Fai riferimento a ruoli a livello di database per comprendere meglio i ruoli fissi a livello di database.
13. Disattiva il servizio browser SQL Server
SQL Server utilizza il servizio browser per l'istanza denominata. Ascolta tutte le richieste in arrivo per le connessioni a SQL Server. Utilizza la porta UDP 1434 e risponde alle richieste con il numero di porta TCP/IP necessario per la connessione a SQL Server. Pertanto, è possibile disattivare il servizio browser e definire in modo esplicito il numero di porta nelle stringhe dell'applicazione. Ciò evita l'esposizione del numero di porta alle richieste di connessione in entrata e aiuta con la sicurezza di SQL Server.
Puoi fare riferimento all'articolo Come funziona il browser SQL Server per comprendere meglio il servizio browser SQL Server.
Ulteriori considerazioni sulla sicurezza di SQL Server
Come indicato, la sicurezza di SQL Server è un processo continuo con vari fattori e passaggi. È necessario rivedere regolarmente le istanze di SQL Server, i criteri di sicurezza e aggiornarli regolarmente sia a livello di sistema operativo che di SQL Server. Applicando regolarmente queste best practice, contribuirai a creare un servizio di database più sicuro e senza interruzioni per la tua azienda.