MySQL MariaDB

Crittografia a riposo in MariaDB

Crittografia a riposo in MariaDB
La crittografia dei dati inattivi impedisce a un utente malintenzionato di accedere ai dati crittografati archiviati sul disco anche se ha accesso al sistema. I database open source MySQL e MariaDB ora supportano la funzionalità di crittografia dei dati inattivi che soddisfa le esigenze della nuova legislazione UE sulla protezione dei dati. La crittografia MySQL a riposo è leggermente diversa da MariaDB poiché MySQL fornisce solo la crittografia per le tabelle InnoDB. Considerando che MariaDB fornisce anche un'opzione per crittografare file come registri di ripristino, registri lenti, registri di controllo, registri di errore, ecc. Tuttavia, entrambi non possono crittografare i dati su una RAM e proteggerli da una radice dannosa.

In questo articolo impareremo a configurare la crittografia a livello di database per MariaDB.

Iniziare

La crittografia dei dati a riposo richiede un plug-in di crittografia insieme alla gestione delle chiavi. Il plugin di crittografia è responsabile della gestione della chiave di crittografia e della crittografia/decrittografia dei dati.

MariaDB fornisce tre soluzioni di gestione delle chiavi di crittografia, quindi il modo in cui i database gestiscono la chiave di crittografia dipende dalla soluzione che stai utilizzando. Questo tutorial dimostrerà la crittografia a livello di database utilizzando la soluzione MariaDB File Key Management. Tuttavia, questo plugin non fornisce una funzione di rotazione dei tasti.

Se stai utilizzando un server LAMP, i file per aggiungere questo plugin si trovano nella cartella “/opt/lampada” directory. In caso contrario, le modifiche vengono apportate nel “/etc/mysql/conf.d" cartella.

Creazione di chiavi di crittografia

Prima di crittografare il database utilizzando il plug-in Gestione chiavi file, è necessario creare i file contenenti le chiavi di crittografia. Creeremo un file con due informazioni. Questa è una chiave di crittografia in un formato con codifica esadecimale insieme a un identificatore di chiave a 32 bit.

Creeremo una nuova cartella "chiavi" nel “/etc/mysql/” directory e utilizzare l'utilità OpenSSL per generare casualmente 3 stringhe esadecimali e reindirizzare l'output a un nuovo file nel in chiavi cartella. Digita i seguenti comandi:

[email protected]:~$ sudo mkdir /etc/mysql/keys
[email protected]:~$ echo -n "1;"$openssl rand hex 32 > /etc/mysql/keys/enc_keys"
[email protected]:~$ echo -n "2;"$openssl rand hex 32 > /etc/mysql/keys/enc_keys"
[email protected]:~$ echo -n "3;"$openssl rand hex 32 > /etc/mysql/keys/enc_keys"

Dove 1,2,3 sono gli identificatori chiave; li includiamo per creare un riferimento alle chiavi di crittografia utilizzando la variabile innodb_default_encryption_key_id in MariaDB. Il file di output sarà simile a questo:

1;01495ba35e1c9602e14e40bd6de41bb8
2;3cffa4a5d288e90108394dbf639664f8
3;9953297ed1a58ae837486318840f5f1d

Crittografia file chiave

Possiamo facilmente impostare la variabile di sistema file_key_management_filename con il percorso appropriato all'interno del plugin File Key Management. Ma non è sicuro lasciare le chiavi in ​​chiaro. Possiamo ridurre il rischio in una certa misura assegnando i permessi ai file, ma questo non è sufficiente.

Ora crittograferemo le chiavi create in precedenza utilizzando una password generata casualmente. Al contrario, la dimensione della chiave può variare da 128/192/256 bit.

[email protected]:~$ openssl rand -hex 192> /etc/mysql/keys/enc_paswd.chiave

Quindi useremo il openssl enc comando nel terminale per crittografare il enc_key.TXT file in enc_key.enc, utilizzando la chiave di crittografia creata sopra. Inoltre, MariaDB supporta solo la modalità CBC di AES per crittografare le sue chiavi di crittografia.

[email protected]:~$ openssl enc -aes-256-cbc -md sha1 -pass file:/etc/mysql/keys/enc_paswd.key -in /etc/mysql/keys/enc_key.txt -out /etc/mysql/keys/enc_key.enc && sudo rm /etc/mysql/keys/enc_key.TXT

Cancelliamo anche il nostro chiavi_enc.TXT file in quanto non è più necessario. Inoltre, possiamo sempre decifrare i nostri dati in MariaDB purché il nostro file di password sia sicuro.

Configurazione del plugin per la gestione delle chiavi dei file

Ora configureremo MariaDB con il plugin File Key Management aggiungendo le seguenti variabili nel file di configurazione. I file di configurazione si trovano solitamente in '/etc/mysql' e leggi tutto .cnf per impostazione predefinita. Oppure puoi creare un nuovo file di configurazione “mariadb_enc.cnf” sotto '/etc/mysql/conf.d/ directory.

Ora il tuo file di configurazione può avere un aspetto completamente diverso da questo. Tuttavia, aggiungi queste variabili di crittografia in [sqld]. Se la chiave è crittografata, il plugin richiede due variabili di sistema da configurare, i.e., file_key_management_filename e file_key_management_filekey.

[sqld]
#Plugin per la gestione delle chiavi dei file
plugin_load_add=file_key_management
file_key_management = ON file_key_management_encryption_algorithm=aes_cbc file_key_management_filename = /etc/mysql/keys/enc_keys.enc
file_key_management_filekey = /etc/mysql/keys/enc_paswd.chiave
# Configurazione della crittografia InnoDB/XtraDB
innodb_default_encryption_key_id = 1
innodb_encrypt_tables = ON
innodb_encrypt_log = ON
innodb_encryption_threads = 4
# Configurazione della crittografia di Aria
aria_encrypt_tables = ON
# Crittografia Temp & Log
encrypt-tmp-disk-tables = 1
crittografare-tmp-file = 1
encrypt_binlog = ON

Puoi trovare i dettagli per ogni variabile di sistema dal sito ufficiale di MariaDB.

Protezione del file di password

Cambieremo i permessi della nostra directory MySQL per proteggere la password e altri file sensibili. La proprietà di MariaDB verrà cambiata all'utente corrente, che su Ubuntu è mysql.

sudo chown -R mysql:root /etc/mysql/keys
sudo chmod 500 /etc/mysql/keys/

Ora cambieremo la password e i permessi dei file crittografati in

sudo chown mysql:root /etc/mysql/keys/enc_paswd.chiave /etc/mysql/keys/enc_key.enc
sudo chmod 600 /etc/mysql/keys/enc_paswd.chiave /etc/mysql/keys/enc_key.enc

Ora riavvia il servizio di database.

sudo service mysql riavvio

Conclusione

Questo articolo ha appreso come la crittografia a livello di database sia la necessità del momento e come possiamo configurare la crittografia a riposo in MariaDB. L'unico inconveniente del plugin File Key Management è che non supporta la rotazione delle chiavi. Tuttavia, a parte questo plugin, molte altre soluzioni di crittografia per la gestione delle chiavi, i.e., Plugin AWS Key Management e Plugin Eperi Key Management. Puoi trovare maggiori dettagli su questi plugin dal sito ufficiale di MariaDB.

Come sviluppare un gioco su Linux
Un decennio fa, non molti utenti Linux avrebbero previsto che il loro sistema operativo preferito un giorno sarebbe diventato una piattaforma di gioco...
Porte open source di motori di gioco commerciali
Ricreazioni del motore di gioco gratuite, open source e multipiattaforma possono essere utilizzate per riprodurre titoli di giochi vecchi e abbastanza...
I migliori giochi da riga di comando per Linux
La riga di comando non è solo il tuo più grande alleato quando usi Linux, ma può anche essere una fonte di intrattenimento perché puoi usarla per gioc...