DataSunrise Consegue la Certificazione AWS DevOps Competency per AWS DevSecOps e Monitoraggio, Logging e Performance

Come Proteggere il Suo Database SQL Server da Attacchi MITM con DataSunrise

Come Proteggere il Suo Database SQL Server da Attacchi MITM con DataSunrise

1 Che Cos’è il MITM?

Quando un client si connette a un server tramite un canale protetto, c’è il rischio che una terza parte si connetta tra di loro con la capacità di ascoltare e interferire con le comunicazioni. Gli attacchi di rete lanciati tramite tale terza parte sono chiamati Man in the middle (MITM) attacks. Ci sono molti modi per effettuare un tale attacco, ma il principio di base è di far connettere segretamente il client al server dell’attaccante.

2 Come proteggersi dagli attacchi MITM?

Il metodo principale di protezione contro gli attacchi MITM è l’analisi dell’infrastruttura di rete al momento della connessione al server e il rilevamento di parametri sospetti che non sono tipici per la connessione a un certo server. Se si utilizza il protocollo SSL per la protezione, un client può controllare il certificato del server durante l’handshake. Un certificato può avere molti parametri, scambiati tra il client e il server durante l’autenticazione. Pratica standard per l’SSL è terminare immediatamente una connessione se una delle parti accetta un parametro (Nome Directory, DNS, Email, GUID, IP, UPN, URL e qualsiasi altro) che non è pertinente ai parametri del suo ambiente. Ma anche tale controllo del certificato non può garantire piena sicurezza, poiché l’infrastruttura del client al momento dell’attacco può essere modificata significativamente per superare il controllo. Ecco perché vengono spesso utilizzati metodi aggiuntivi di validazione del certificato. Uno di questi metodi è la firma di un certificato da parte di un’autorità di fiducia. Si ritiene che sia impossibile falsificare una tale firma, e ogni client può verificare la sua autenticità. Ecco perché qualsiasi certificato firmato da un’autorità speciale potrebbe essere accettato come più o meno sicuro, a seconda dell’autorità dell’emittente.

3 Protezione contro MITM in MS SQL Server

Il controllo del certificato è facoltativo in MS SQL, ma è abilitato di default. I due principali parametri che partecipano a un controllo del certificato sono la data di scadenza del certificato e il nome dell’host per cui il certificato è stato emesso (Nome Comune). Se un certificato è scaduto, o non è stato emesso per l’host di un server con cui è stata stabilita una connessione, la connessione verrebbe immediatamente terminata con una notifica all’utente. Nel caso in cui un’autorità di certificazione sia coinvolta in un controllo aggiuntivo dei certificati, il client verificherà la sua firma. In tal caso, ci dovrebbe essere un certificato radice di questa autorità nel deposito dei certificati. Molti sistemi operativi moderni includono set di certificati radice pre-costruiti delle autorità più affidabili, ed è per questo che, quando si seleziona un’autorità di certificazione per firmare un certificato aziendale, sarebbe saggio selezionare uno dalla lista.

Nel moderno SSMS, c’è una casella di controllo aggiuntiva «Trust server certificate» nella pagina di connessione del server. Viene utilizzata per controllare il certificato del server. Quando ci si connette a un server tramite ODBC, c’è un parametro aggiuntivo, “TrustServerCertificate”, nella stringa di connessione. Il valore “Yes” disabilita il controllo e “no” lo abilita.

4 Certificati in DataSunrise

Il proxy di DataSunrise è di fiducia, ma, tuttavia, è una terza parte della connessione, per questo motivo tutti i mezzi di protezione del client contro il MITM sarebbero attivati al momento della connessione con un tale proxy.

In DataSunrise, ogni istanza di database opera con un set di chiavi private e un certificato. Dal punto di vista del client, questo set appartiene al server, ma in generale, queste chiavi non sono associate al server finale che serve il proxy di DataSunrise in alcun modo. È questo certificato che un client controllerà se la protezione contro il MITM è attivata.

5 Possibili configurazioni di DataSunrise inclusive della protezione contro MITM

Per fornire un livello di protezione simile alla connessione diretta e alla connessione proxy, è necessario configurare correttamente DataSunrise e gli host del client. Potrebbero esserci diverse opzioni di configurazione.

Un set di chiavi e un certificato di default forniscono una protezione minima. Non è garantito che il certificato di default corrisponda al CN=DataSunrise Database Security Suite hostname. Ecco perché la prima cosa che Lei dovrebbe fare per proteggere una connessione è generare un nuovo set di chiavi e un certificato.

Un set di base di chiavi e un certificato sono inclusi nel file proxy.pem. È questo file che dovrebbe essere sostituito.

5.1 Caso generale

Questo è il caso più semplice, quando un amministratore ha solo un’istanza di DataSunrise a disposizione e un solo server MS SQL. E c’è un insieme limitato e stabilito di client che possono accedere ai server forniti tramite DataSunrise. Questo caso comprende due opzioni:

5.1.1 Generazione di proxy.pem (certificato autofirmato)

È il metodo più semplice per generare nuove chiavi. Creare un file proxy.cfg (“commonName” dovrebbe includere un nome reale dell’host di DataSunrise):

[req] distinguished_name = req_distinguished_name prompt = no [req_distinguished_name] countryName = US stateOrProvinceName = Washington localityName = Seattle organizationName = Sunrise organizationalUnitName = IT commonName = wmserver.db.local emailAddress = [email protected]

Eseguire il seguente file .bat nella cartella in cui si trova il file proxy.config:

SET RANDFILE=random SET PASS=R0T3qSW2s0459koH54 openssl genrsa -des3 -passout pass:%PASS% -out key.pem 2048 openssl rsa -passin pass:%PASS% -in key.pem -out key.pem openssl req -config proxy.cfg -new -key key.pem -out certificate.req openssl req -sha384 -x509 -config proxy.cfg -days 365 -key key.pem -in certificate.req -out certificate.cer openssl ecparam -genkey -name secp256r1 -out ec.pem openssl dhparam -out dh.pem 1024 COPY certificate.cer+key.pem+dh.pem+ec.pem proxy.pem /b DEL random certificate.req key.pem dh.pem ec.pem

Dopo l’esecuzione dello script, dovremmo ottenere un file proxy.pem con una chiave RSA a 2048 bit, una chiave DH a 1024 bit, parametri EC con la curva “secp256r1” e un certificato emesso per 365 giorni con l’algoritmo di firma “sha384”.

Inoltre, ci dovrebbe essere generato un file certificate.cer che dovrebbe essere installato nel deposito dei certificati attendibili del client.

5.1.2 Installazione di un certificato e chiavi proxy tramite l’interfaccia utente

Se un utente possiede già un set di chiavi e un certificato, potrebbero essere installati tramite l’interfaccia web di DataSunrise.

Per impostare delle chiavi e un certificato per un proxy, eseguire le seguenti operazioni:

  1. Creare un Gruppo Chiave SSL con il tipo Client Side.
  2. Riempire questo gruppo con tutti i parametri necessari in codifica Base64: un certificato, una chiave privata, parametri DH, parametri EC
  3. Connettere questo gruppo a un’istanza selezionandolo dalla lista dei Gruppi Chiave

Entrambe le opzioni (5.1.1 e 5.1.2) richiedono che Lei riavvii il Core di DataSunrise dopo aver sostituito le chiavi e installi un certificato creato per DataSunrise nel deposito dei certificati attendibili lato client.

5.2 Diverse istanze di DataSunrise

La configurazione successiva è per più istanze di DataSunrise. Se vengono utilizzati i suggerimenti del caso generale descritto sopra, sarebbe necessario installare un intero set di certificati lato client e tenere d’occhio la loro applicabilità. Per evitare possibili errori, si possono firmare tutti i certificati con una singola autorità di certificazione. Ci sono anche due opzioni.

5.2.1 La propria autorità di certificazione

Questa opzione è per creare la propria autorità di certificazione senza dipendenze aggiuntive dal sistema operativo. L’autorità di un tale emittente di certificati sarebbe minima.

Preparare l’infrastruttura:

mkdir db mkdir db\new mkdir db\private echo. 2>db\index echo 01> ./db/serial echo unique_subject = no> ./db/index.attr

Riempire il file ca.cfg:

[req] distinguished_name = req_distinguished_name prompt = no RANDFILE = ./db/private/.rand [req_distinguished_name] countryName = US stateOrProvinceName = Washington localityName = Seattle organizationName = DataSunrise organizationalUnitName = IT commonName = DataSunrise emailAddress = [email protected]

Riempire il file proxy.cfg:

[req] distinguished_name = req_distinguished_name prompt = no RANDFILE = ./db/private/.rand [req_distinguished_name] countryName = US stateOrProvinceName = Washington localityName = Seattle organizationName = Sunrise organizationalUnitName = IT commonName = wmserver.db.local emailAddress = [email protected] [ca] default_ca = CA_default [CA_default] dir = ./db # top dir database = $dir/index # index file. new_certs_dir = $dir/new # new certs dir certificate = $dir/ca.cer # The CA cert serial = $dir/serial # serial no file private_key = $dir/private/ca.pem # CA private key RANDFILE = $dir/private/.rand # random number file default_days = 365 # how long to certify for default_crl_days = 30 # how long before next CRL default_md = sha384 policy = policy_any # default policy email_in_dn = no # Don't add the email into cert DN name_opt = ca_default # Subject name display option cert_opt = ca_default # Certificate display option #copy_extensions = none # Don't copy extensions from request [policy_any] countryName = supplied stateOrProvinceName = optional organizationName = optional organizationalUnitName = optional commonName = supplied emailAddress = optional

Generare un certificato radice ./db/ca.cer e una chiave ./db/private/ca.pem. Questo certificato (la sua chiave) verrà utilizzato per firmare tutti i futuri certificati. Pertanto, ./db/ca.cer dovrebbe essere installato in un deposito certificato attendibile di tutti i client che verificheranno i certificati DataSunrise:

./db/private/ca.pem: SET RANDFILE=.\db\private\.rand SET PASS=TxK7T88C27 openssl genrsa -des3 -passout pass:%PASS% -out .\db\private\ca.pem 2048 openssl rsa -passin pass:%PASS% -in .\db\private\ca.pem -out .\db\private\ca.pem openssl req -new -x509 -days 3650 -key .\db\private\ca.pem -out .\db\ca.cer -config ca.cfg openssl x509 -noout -text -in .\db\ca.cer

Generare e firmare proxy.pem:

SET RANDFILE=.\db\private\.rand SET /P serial=<.\db\serial SET PASS=RTqSWs0koH openssl genrsa -des3 -passout pass:%PASS% -out .\db\private\%serial%.pem 2048 openssl rsa -passin pass:%PASS% -in .\db\private\%serial%.pem -out .\db\private\%serial%.pem openssl req -new -key .\db\private\%serial%.pem -nodes -config proxy.cfg -out .\db\private\%serial%.req openssl ca -batch -config proxy.cfg -infiles .\db\private\%serial%.req openssl ecparam -genkey -name secp256r1 -out .\db\private\%serial%.ec.pem openssl dhparam -out .\db\private\%serial%.dh.pem 1024 COPY .\db\new\%serial%.pem+key.pem+.\db\new\%serial%.dh.pem+.\db\new\%serial%.ec.pem proxy.pem /b MOVE .\db\new\%serial%.pem .\db\new\%serial%.cer

I certificati creati saranno salvati nella cartella db\new\

Le chiavi generate e i pfx compressi (chiave e certificato) saranno salvati nella cartella db\private\

Esempio. Un set di chiavi numero “01”:

db\new\01.cer — Nuovo certificato db\private\01.pem — Nuova chiave privata RSA db\private\01.dh.pem — Nuovi parametri DH db\private\01.ec.pem — Nuovi parametri e chiave EC

Durante ogni generazione di proxy.pem verrà creato un nuovo set di chiavi. Corresponderà a un nuovo proxy.pem generato. Dopo la sostituzione di proxy.pem in DataSunrise, è necessario riavviare il Core affinché le modifiche abbiano effetto. Avendo un nuovo set di chiavi, è possibile utilizzare anche il metodo 5.1.2 per aggiungere le chiavi tramite l’interfaccia utente senza modificare il proxy.pem.

5.2.2 Esecuzione di una autorità di certificazione aziendale

Se è necessario proteggere diversi host client, o ci sono diversi host DataSunrise inclusi in una rete aziendale (dominio) o in diverse reti attendibili (foresta), sarebbe utile utilizzare i servizi di Active Directory Certificate. In questo caso, è possibile utilizzare certreq per generare un proxy.pem. Prendiamo un proxy.cfg descritto nel sottos. 5.1.1 e generiamo un proxy.pem (i comandi dovrebbero essere eseguiti come utente con privilegi sufficienti per emettere nuovi certificati o come amministratore di dominio):

SET RANDFILE=random SET PASS=89RT90qSWs020koH12 openssl genrsa -des3 -passout pass:%PASS% -out key.pem 2048 openssl rsa -passin pass:%PASS% -in key.pem -out key.pem openssl req -config proxy.cfg -new -key key.pem -out certificate.req certreq -submit -attrib "CertificateTemplate:WebServer" certificate.req certificate.cer openssl ecparam -genkey -name secp256r1 -out ec.pem openssl dhparam -out dh.pem 1024 COPY certificate.cer+key.pem+dh.pem+ec.pem proxy.pem /b DEL random certificate.req

certreq visualizzerà un dialogo per selezionare un centro di certificazione aziendale che dovrebbe essere utilizzato per emettere un nuovo certificato. Di solito, c’è un solo centro in tale elenco:

52C1

Ma questo dipende dall’infrastruttura di dominio aziendale. Consultare il proprio amministratore, se necessario.

Installando il proxy.pem, non è richiesta alcuna configurazione aggiuntiva del client di rete, perché dopo l’installazione di AD CS, il certificato radice copre automaticamente tutti gli host del dominio/foresta.

Utilizzando un set di chiavi e un certificato (certificate.cer, key.pem, dh.pem, ec.pem), è possibile utilizzare anche il metodo descritto nel sottos. 5.1.2 per aggiungere chiavi tramite l’interfaccia web senza modificare il proxy.pem.

5.3 Molti client

Quando ha bisogno di applicare un certificato a un numero elevato di client, può utilizzare le politiche di gruppo. Rifersi alla seguente guida Microsoft: https://technet.microsoft.com/en-us/library/cc770315%28v=ws.10%29.aspx?f=255&MSPPError=-2147217396 (Deploy Certificates by Using Group Policy)

6 Conclusione

Utilizzando qualsiasi metodo descritto sopra, può ottenere un alto livello di sicurezza della connessione proxy, ma spetta a Lei scegliere il metodo che meglio si adatta alla Sua infrastruttura. Per assicurarsi la piena sicurezza per il Suo database SQL Server può utilizzare i seguenti strumenti di DataSunrise:

Successivo

Identificare gli Utenti delle Applicazioni con DataSunrise

Identificare gli Utenti delle Applicazioni con DataSunrise

Scopri di più

Ha bisogno del nostro team di supporto?

I nostri esperti saranno lieti di rispondere alle Sue domande.

Informazioni generali:
[email protected]
Servizio clienti e supporto tecnico:
support.datasunrise.com
Richieste di collaborazione e alleanza:
[email protected]