Cryptage au repos dans Mariadb

Cryptage au repos dans Mariadb
Encryption à re-re-relâche empêche un attaquant d'accéder à des données cryptées stockées sur le disque même s'il a accès au système. Les bases de données open source MySQL et MARIADB prennent désormais en charge la fonction de cryptage à redire. Le cryptage MySQL au repos est légèrement différent de MariADB car MySQL ne fournit que le cryptage pour les tables innodB. Tandis que MariaDB fournit également une option pour chiffrer les fichiers tels que les journaux de rétablissement, les journaux lents, les journaux d'audit, les journaux d'erreur, etc. Cependant, les deux ne peuvent pas crypter des données sur un RAM et les protéger d'une racine malveillante.

Dans cet article, nous apprendrons à configurer le cryptage au niveau de la base de données pour MariaDB.

Commencer

Le chiffrement Data at REST nécessite un plugin de chiffrement avec la gestion des clés. Le plugin de chiffrement est responsable de la gestion de la clé de chiffrement ainsi que du cryptage / du décryptage des données.

MARIADB fournit trois solutions de gestion des clés de chiffrement, donc la façon dont vos bases de données gèrent la clé de chiffrement dépend de la solution que vous utilisez. Ce tutoriel démontrera le chiffrement au niveau de la base de données à l'aide de la solution de gestion des clés du fichier MARIADB. Cependant, ce plugin ne fournit pas de fonction de rotation clé.

Si vous utilisez un serveur LAMP, les fichiers pour ajouter ce plugin sont situés dans le «/ Opt / lamp» annuaire. Sinon, alors les modifications sont apportées dans le «/ Etc / mysql / confre.d" dossier.

Création de clés de chiffrement

Avant de chiffrer la base de données à l'aide du plugin de gestion des touches de fichiers, nous devons créer les fichiers contenant des clés de chiffrement. Nous allons créer un fichier avec deux informations. C'est une clé de chiffrement dans un format codé hexadécimal avec un identifiant de clé 32 bits.

Nous allons créer un nouveau dossier "clés" dans le «/ Etc / mysql /» répertoire et utilisez l'utilitaire OpenSSL pour générer de manière aléatoire 3 chaînes hexadécimales et rediriger la sortie vers un nouveau fichier dans le clés dossier. Tapez les commandes suivantes:

ubuntu @ ubuntu: ~ $ sudo mkdir / etc / mysql / keys
ubuntu @ ubuntu: ~ $ echo -n "1;" $ openssl rand hex 32> / etc / mysql / keys / enc_keys "
ubuntu @ ubuntu: ~ $ echo -n "2;" $ openssl rand hex 32> / etc / mysql / keys / enc_keys "
ubuntu @ ubuntu: ~ $ echo -n "3;" $ openssl rand hex 32> / etc / mysql / keys / enc_keys "

Où 1,2,3 sont les identifiants clés; Nous les incluons pour créer une référence aux clés de chiffrement en utilisant la variable innodb_default_encryption_key_id dans Mariadb. Le fichier de sortie ressemblera à ceci:

1; 01495BA35E1C9602E14E40BD6DE41BB8
2; 3cffa4a5d288e90108394dbf639664f8
3; 9953297ED1A58AE837486318840F5F1D

Cryptage de fichiers clés

Nous pouvons facilement définir la variable système file_key_management_filename avec le chemin approprié à l'intérieur du plugin de gestion de la clé de fichier. Mais il n'est pas sûr de laisser les clés en texte brut. Nous pouvons réduire le risque dans une certaine mesure en attribuant des autorisations de fichiers, mais ce n'est pas suffisant.

Nous allons maintenant crypter des clés créées précédemment en utilisant un mot de passe généré aléatoirement. En revanche, la taille des clés peut varier de 128/192 / 256 bits.

ubuntu @ ubuntu: ~ $ openssl rand -hex 192> / etc / mysql / keys / enc_paswd.clé

Par conséquent, nous utiliserons le OpenSSL ENC commande dans le terminal pour crypter le ENC_KEY.SMS déposer à ENC_KEY.enclos, en utilisant la clé de chiffrement créée ci-dessus. En outre, MariADB ne prend en charge que le mode CBC des AES pour crypter ses clés de chiffrement.

Ubuntu @ Ubuntu: ~ $ OpenSSL ENC -AES-256-CBC -MD SHA1 -PASS Fichier: / etc / MySQL / Keys / ENC_PASWD.clé -in / etc / mysql / clés / enc_key.txt -out / etc / mysql / keys / enc_key.enc && sudo rm / etc / mysql / keys / enc_key.SMS

Nous supprimons également notre ENC_KEYS.SMS fichier car il n'est plus nécessaire. En outre, nous pouvons toujours décrypter nos données dans MariaDB tant que notre fichier de mot de passe est sécurisé.

Configuration du plugin de gestion des clés de fichier

Nous allons maintenant configurer MariADB avec le plugin de gestion des clés de fichier en ajoutant les variables suivantes dans le fichier de configuration. Les fichiers de configuration sont généralement situés dans '/ etc / mysql' et lisez tous les .Fichiers CNF par défaut. Ou vous pouvez créer un nouveau fichier de configuration «Mariadb_enc.CNF " sous '/ etc / mysql / confre.d/ annuaire.

Maintenant, votre fichier de configuration peut être entièrement différent de cela. Cependant, ajoutez ces variables de chiffrement sous [SQLD]. Si la clé est cryptée, le plugin nécessite deux variables système pour configurer, je.e., file_key_management_filename et file_key_management_filekey.

[SQLD]
Plugin de gestion des clés de fichier
plugin_load_add = file_key_management
file_key_management = sur file_key_management_encryption_algorithm = aes_cbc file_key_management_filename = / etc / mysql / keys / enc_keys.enclos
file_key_management_filekey = / etc / mysql / keys / enc_paswd.clé
Configuration du cryptage # innodb / xtradb
innodb_default_encryption_key_id = 1
innodb_encrypt_tables = sur
innodb_encrypt_log = sur
innodb_encryption_threads = 4
# Configuration du cryptage Aria
aria_encrypt_tables = sur
# Cryptage temporaire et journal
crypt-tmp-disk-tables = 1
crypt-tmp-files = 1
crypt_binlog = sur

Vous pouvez trouver des détails pour chaque variable système à partir du site officiel de MariaDB.

Sécuriser le fichier de mot de passe

Nous modifierons nos autorisations de répertoire MySQL pour sécuriser le mot de passe et d'autres fichiers sensibles. La propriété du mariaDB sera changée en utilisateur actuel, qui sur Ubuntu est mysql.

sudo chown -r mysql: root / etc / mysql / clés
sudo chmod 500 / etc / mysql / keys /

Nous allons maintenant modifier le mot de passe et les autorisations de fichiers cryptées pour

sudo chown mysql: root / etc / mysql / keys / enc_paswd.clé / etc / mysql / keys / enc_key.enclos
sudo chmod 600 / etc / mysql / keys / enc_paswd.clé / etc / mysql / keys / enc_key.enclos

Redémarrez maintenant le service de base de données.

service sudo mysql redémarrage

Conclusion

Cet article a appris comment le cryptage au niveau de la base de données est le besoin de l'heure et comment nous pouvons configurer le chiffrement à redire. Le seul inconvénient du plugin de gestion des clés de fichier est qu'il ne prend pas en charge la rotation des clés. Cependant, en dehors de ce plugin, de nombreuses autres solutions de cryptage de gestion clés, je.e., Plugin de gestion des clés AWS et plugin de gestion des clés Eperi. Vous pouvez trouver plus de détails sur ces plugins sur le site officiel de MariaDB.