Come Configurare i Certificati SSL per il Proxy di Database di DataSunrise
La maggior parte dei database supporta la verifica dell’identità del server utilizzando i certificati. Pertanto, viene eseguita una procedura di verifica durante una connessione a un server: se il certificato ricevuto dal server è autentico, verrà stabilita una connessione; altrimenti, sarà considerato un attacco man-in-the-middle. Per impostazione predefinita, questo controllo del certificato del server può essere abilitato/disabilitato a seconda del DBMS. Tuttavia, consigliamo di abilitare il controllo del certificato per mantenere i tuoi dati al sicuro.
Per una connessione diretta tra un database e un’applicazione client, il controllo del certificato funziona come segue:
client(CA-cert) <---> server(Server-cert, Server-key)
- CA-cert – certificato radice dell’autorità di certificazione,
- Server-key – chiave privata del server
- Server-cert – certificato del server firmato dalla CA.
Prendiamo come esempio MySQL.
Il client MySQL è a conoscenza del certificato CA. Sul lato server ci sono Server-cert e Server-key. La modalità SSL può essere abilitata dal client. Il valore predefinito di ssl_mode=prefer significa che l’autenticazione del certificato del server è disabilitata. Inoltre, il parametro ssl_mode può essere impostato su:
- Verify-CA (Voglio che i miei dati siano crittografati e accetto il sovraccarico. Voglio essere sicuro di connettermi a un server di cui mi fido)
- Verify-Identity (Voglio che i miei dati siano crittografati e accetto il sovraccarico. Voglio essere sicuro di connettermi a un server di cui mi fido e che sia quello specificato)
Di seguito è riportata una stringa di esempio utilizzata per stabilire una connessione diretta con controllo del certificato:
$mysql --host=localhost --port=3306 --user=root --ssl-ca=ca.pem --ssl_mode=VERIFY_CA
[root@3306][(none)]>
Il seguente diagramma mostra il processo di stabilimento di una connessione con il controllo del certificato DataSunrise abilitato:
DataSunrise implementa la funzionalità di crittografia end-to-end in una catena client-proxy-server.
Guarda il diagramma sopra: ci sono due connessioni. La prima connessione viene stabilita tra un client e un proxy DataSunrise. Per questa connessione viene utilizzata la configurazione SSL del proxy DataSunrise. Per configurarla, è necessario avere Proxy-key e Proxy-cert generati e firmati dal certificato CA. Questo ti permette di essere sicuro di connetterti a un autentico proxy DataSunrise.
La seconda connessione viene stabilita tra un proxy DataSunrise e un server di database e utilizza la propria configurazione SSL. Il proxy DataSunrise funziona qui come un’applicazione client e può anche verificare una connessione a un server autentico.
Si prega di notare che l’autenticazione del certificato è un’opzione aggiuntiva per la crittografia SSL, non funziona se la crittografia SSL è disabilitata.
È anche importante che il proxy DataSunrise sia un proxy trasparente e supporti la modalità di crittografia negoziata dal client e dal server di database. Questo significa che è impossibile crittografare solo una connessione nella catena. Il proxy DataSunrise non può ricevere traffico crittografato da un’estremità e inviare traffico non crittografato all’altra estremità e viceversa.
Ecco i passaggi che ti permettono di configurare il controllo del certificato SSL in DataSunrise:
Prima connessione
1. Vai a Configuration → SSL Key Groups e clicca Add Group
2. Inserisci il tuo Proxy-cert e Proxy-key nei campi corrispondenti. Per questo, devi scegliere il tipo di Proxy.
3. Vai a Configuration → Databases. Apri la pagina della tua istanza di database e clicca sull’icona “matita” per modificare le impostazioni del proxy.
4. Seleziona il tuo SSL Key Group nell’elenco a discesa Proxy Keys e salva le impostazioni.
Seconda connessione
1. Vai a Configuration → SSL Key Group e clicca Add Group. Seleziona il tipo Interface e inserisci il tuo CA-cert nel campo CA.
2. Vai a Configuration → Databases, seleziona la tua istanza e clicca sull’icona “matita” per modificare le impostazioni dell’interfaccia.
3. Devi specificare il gruppo creato nel primo passaggio, selezionare la modalità di verifica del certificato e salvare le impostazioni.
- Don’t verify – il controllo del certificato non verrà eseguito,
- Verify CA only – verrà verificato il certificato CA del server,
- Verify CA and Identity – verranno verificati il certificato CA del server e il nome host del server nel certificato.
Avendo completato i passaggi sopra, la connessione a un proxy avvierà il controllo del certificato per i due server ed eliminerà la possibilità di attacchi MITM.
$mysql --host=localhost --port=3307 --user=root --ssl-ca=CA_Proxy.crt --ssl_mode=VERIFY_IDENTITY
[root@3307][(none)]>