Verschlüsselung in Mariadb in Ruhe

Verschlüsselung in Mariadb in Ruhe
Die Verschlüsselungsrest verhindert, dass ein Angreifer auf auf der Festplatte gespeicherte Daten zugreift, auch wenn er Zugriff auf das System hat. Die Open-Source-Datenbanken MySQL und Mariadb unterstützen nun die Verschlüsselungsrestfunktion, die den Anforderungen neuer EU-Datenschutzgesetze entspricht. Die MySQL -Verschlüsselung in Ruhe unterscheidet sich geringfügig von MariadB, da MySQL nur Verschlüsselung für InnoDB. Während Mariadb auch eine Option zum Verschlüsseln von Dateien wie Wiederholung von Protokollen, langsamen Protokollen, Prüfprotokollen, Fehlerprotokollen usw. bietet. Beide können jedoch keine Daten zu einem RAM verschlüsseln und sie vor einer böswilligen Wurzel schützen.

In diesem Artikel werden wir lernen, die Verschlüsselung auf Datenbankebene für Mariadb zu konfigurieren.

Einstieg

Die Daten zur Ruheverschlüsselung erfordern ein Verschlüsselungs -Plugin zusammen mit der Schlüsselverwaltung. Das Verschlüsselungs -Plugin ist für die Verwaltung des Verschlüsselungsschlüssels sowie für die Verschlüsselung/Entschlüsseln der Daten verantwortlich.

MariADB bietet drei Lösungen für die Verschlüsselungsschlüsselverwaltung. Die Art und Weise, wie Sie Datenbanken verwalten, hängt also von der von Ihnen verwendeten Lösung ab. In diesem Tutorial wird die Verschlüsselung auf Datenbankebene mithilfe der MariADB-Dateischlüsselverwaltungslösung demonstriert. Dieses Plugin bietet jedoch keine wichtige Rotationsfunktion.

Wenn Sie einen Lampenserver verwenden, befinden sich die Dateien zum Hinzufügen dieses Plugins in der "/Opt/lamp" Verzeichnis. Wenn nicht, werden die Änderungen in der vorgenommen “/Etc/mysql/conf.D" Ordner.

Erstellen von Verschlüsselungsschlüssel

Bevor Sie die Datenbank mithilfe des Dateischlüsselverwaltungs -Plugins verschlüsseln, müssen wir die Dateien erstellen, die Verschlüsselungsschlüssel enthalten. Wir erstellen eine Datei mit zwei Informationen. Das ist ein Verschlüsselungsschlüssel in einem hexcodierten Format zusammen mit einer 32-Bit-Schlüsselkennung.

Wir werden einen neuen Ordner erstellen "Schlüssel" im "/Etc/mysql/" Verzeichnis und verwenden Sie das OpenSSL -Dienstprogramm, um zufällig 3 Hex -Zeichenfolgen zu generieren und die Ausgabe in eine neue Datei in der Schlüssel Ordner. Geben Sie die folgenden Befehle ein:

Ubuntu@Ubuntu: ~ $ sudo mkdir/etc/mysql/keys
Ubuntu@Ubuntu: ~ $ echo -n "1;" $ openssl rand hex 32>/etc/mysql/keys/eck_keys "
Ubuntu@Ubuntu: ~ $ echo -n "2;" $ opensensl rand hex 32>/etc/mysql/keys/eck_keys "
Ubuntu@Ubuntu: ~ $ echo -n "3;" $ opensensl Rand Hex 32>/etc/mysql/keys/eck_keys "

Wobei 1,2,3 die wichtigsten Kennungen sind; Wir schließen sie ein, um einen Verweis auf die Verschlüsselungsschlüssel mit variablen innoDB_Default_encryption_key_id in mariadb zu erstellen. Die Ausgabedatei sieht so aus:

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

Schlüsseldateiverschlüsselung

Wir können den Systemvariablen -Datei_key_Key_Management_filename einfach mit dem entsprechenden Pfad im Plugin "Dateischlüsselverwaltungen" festlegen. Aber es ist nicht sicher, die Schlüssel in einfachem Text zu lassen. Wir können das Risiko in gewissem Maße durch Zuweisen von Dateiberechtigungen verringern, aber das ist nicht ausreichend.

Jetzt werden wir zuvor erstellte Schlüssel mit einem zufällig generierten Kennwort verschlüsseln. Im Gegensatz dazu kann die Schlüsselgröße von 128/192/256-Bit variieren.

Ubuntu@Ubuntu: ~ $ openssl rand -hex 192>/etc/mysql/keys/ecm_paswd.Taste

Daher werden wir das verwenden OpenSSL ENC Befehl im Terminal, um die zu verschlüsseln ENC_KEY.txt Datei an ENC_KEY.Enc, Verwenden des oben erstellten Verschlüsselungsschlüssels. Außerdem unterstützt Mariadb nur den CBC -Modus der AES, um seine Verschlüsselungsschlüssel zu verschlüsseln.

Ubuntu@ubuntu: ~ $ openssl Enc -aes -256 -CBC -md SHA1 -pass -Datei:/etc/mysql/keys/ec_paswd.Key -in/etc/mysql/keys/ecc_key.txt -out/etc/mysql/keys/ecc_key.ENC && sudo rm/etc/mysql/keys/Enc_key.txt

Wir löschen auch unsere ENC_KEYS.txt Datei, da sie nicht mehr benötigt wird. Außerdem können wir unsere Daten immer in Mariadb entschlüsseln, solange unsere Passwortdatei sicher ist.

Konfigurieren von Dateischlüsselverwaltungs -Plugin

Wir konfigurieren nun MariADB mit dem Dateischlüsselverwaltungs -Plugin, indem wir die folgenden Variablen in der Konfigurationsdatei hinzufügen. Die Konfigurationsdateien befinden sich normalerweise in '/etc/mysql' ' und alle lesen .standardmäßig CNF -Dateien. Oder Sie können eine neue Konfigurationsdatei erstellen “Mariadb_enc.CNF ” unter '/etc/mysql/conf.D/ Verzeichnis.

Jetzt kann Ihre Konfigurationsdatei von diesem ganz anders aussehen. Fügen Sie diese Verschlüsselungsvariablen jedoch unter [SQLD] hinzu. Wenn der Schlüssel verschlüsselt ist, benötigt das Plugin zwei Systemvariablen zum Konfigurieren, i, i.e., Datei_key_Management_filename und File_key_Management_Filekey.

[SQLD]
#Datei Key Management Plugin
plugin_load_add = file_key_management
Datei_key_Management = auf File_key_Management_encryption_algorithmus = aes_cbc File_key_Management_Filename =/etc/mysql/keys/eck_keys.Enc
Datei_key_Management_Filekey =/etc/mysql/keys/cec_paswd.Taste
# InnoDB/Xtradb -Verschlüsselungsaufbau
INNODB_DEFAULT_ECRYPTION_KEY_ID = 1
innodb_encrypt_tables = on
innodb_encrypt_log = on
innoDb_encryption_threads = 4
# Aria -Verschlüsselungsaufbau
ARIA_ENCRYPT_TABLE = ON
# Temp & Protokollverschlüsselung
Encrypt-TMP-Disk-TABAINS = 1
Encrypt-TMP-Files = 1
ENCRYPT_BINLOG = ON

Sie finden Details für jede Systemvariable von der offiziellen Mariadb -Website.

Sicherung der Passwortdatei

Wir werden unsere MySQL -Verzeichnisberechtigungen ändern, um das Passwort und andere sensible Dateien zu sichern. Der Besitz des Mariadb wird in den aktuellen Benutzer geändert, was auf Ubuntu ist Mysql.

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

Jetzt ändern wir das Passwort und verschlüsselte Dateiberechtigungen auf

sudo chown mysql: root/etc/mysql/keys/ecc_paswd.Schlüssel/etc/mysql/keys/ecc_key.Enc
sudo chmod 600/etc/mysql/keys/ecm_paswd.Schlüssel/etc/mysql/keys/ecc_key.Enc

Starten Sie nun den Datenbankdienst neu.

sudo service MySQL Neustart

Abschluss

Dieser Artikel hat erfahren, wie die Verschlüsselung auf Datenbankebene die Stunde benötigt und wie wir die Verschlüsselungsrest in Mariadb konfigurieren können. Der einzige Nachteil des Dateischlüsselverwaltungs -Plugins besteht darin, dass es keine Schlüsselrotation unterstützt. Abgesehen von diesem Plugin, viele andere wichtige Verwaltungsverschlüsselungslösungen, i jedoch.e., AWS Key Management Plugin und Eperi Key Management Plugin. Weitere Informationen zu diesen Plugins finden Sie auf der offiziellen Website von Mariadb.