MySQL MariaDB

Szyfrowanie w spoczynku w MariaDB

Szyfrowanie w spoczynku w MariaDB
Szyfrowanie w spoczynku uniemożliwia atakującemu dostęp do zaszyfrowanych danych przechowywanych na dysku, nawet jeśli ma dostęp do systemu. Bazy danych typu open source MySQL i MariaDB obsługują teraz funkcję szyfrowania w stanie spoczynku, która spełnia wymagania nowych przepisów UE dotyczących ochrony danych. Szyfrowanie MySQL w spoczynku różni się nieco od MariaDB, ponieważ MySQL zapewnia szyfrowanie tylko dla tabel InnoDB. MariaDB zapewnia również opcję szyfrowania plików, takich jak logi ponawiania, wolne logi, logi audytu, logi błędów itp. Jednak oba nie mogą szyfrować danych w pamięci RAM i chronić ją przed złośliwym rootem.

W tym artykule nauczymy się konfigurować szyfrowanie na poziomie bazy danych dla MariaDB.

Pierwsze kroki

Szyfrowanie danych w spoczynku wymaga wtyczki szyfrowania wraz z zarządzaniem kluczami. Wtyczka szyfrująca odpowiada za zarządzanie kluczem szyfrującym oraz szyfrowanie/odszyfrowywanie danych.

MariaDB udostępnia trzy rozwiązania do zarządzania kluczami szyfrowania, więc sposób, w jaki bazy danych zarządzają kluczem szyfrowania, zależy od używanego rozwiązania. Ten samouczek zademonstruje szyfrowanie na poziomie bazy danych przy użyciu rozwiązania do zarządzania kluczami plików MariaDB. Jednak ta wtyczka nie zapewnia funkcji rotacji kluczy.

Jeśli korzystasz z serwera LAMP, pliki do dodania tej wtyczki znajdują się w „/opcja/lampa” informator. Jeśli nie, to zmiany są wprowadzane w „/etc/mysql/conf.re" teczka.

Tworzenie kluczy szyfrowania

Przed zaszyfrowaniem bazy danych za pomocą wtyczki File key management, musimy utworzyć pliki zawierające klucze szyfrujące. Stworzymy plik z dwoma informacjami pieces. To klucz szyfrowania w formacie zakodowanym szesnastkowo wraz z 32-bitowym identyfikatorem klucza.

Stworzymy nowy folder "Klucze" w „/etc/mysql/” katalogu i użyj narzędzia OpenSSL, aby losowo wygenerować 3 ciągi szesnastkowe i przekierować dane wyjściowe do nowego pliku w Klucze teczka. Wpisz następujące polecenia:

[email chroniony]:~$ 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"

Gdzie 1,2,3 to kluczowe identyfikatory; dołączamy je, aby utworzyć odniesienie do kluczy szyfrowania za pomocą zmiennej innodb_default_encryption_key_id w MariaDB. Plik wyjściowy będzie wyglądał tak:

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

Szyfrowanie pliku klucza

Możemy łatwo ustawić zmienną systemową file_key_management_filename z odpowiednią ścieżką wewnątrz wtyczki File Key Management. Ale pozostawienie kluczy w postaci zwykłego tekstu nie jest bezpieczne. Możemy do pewnego stopnia zmniejszyć ryzyko, przypisując uprawnienia do plików, ale to nie wystarczy.

Teraz zaszyfrujemy wcześniej utworzone klucze za pomocą losowo wygenerowanego hasła. W przeciwieństwie do tego, rozmiar klucza może się różnić od 128/192/256-bitów.

[ochrona poczty e-mail]:~$ openssl rand -hex 192> /etc/mysql/keys/enc_paswd.klucz

Dlatego użyjemy opensl enc polecenie w terminalu, aby zaszyfrować enc_key.tekst plik do enc_key.enc, za pomocą utworzonego powyżej klucza szyfrowania. Poza tym MariaDB obsługuje tylko tryb CBC AES do szyfrowania kluczy szyfrowania.

[email chroniony]:~$ openssl enc -aes-256-cbc -md sha1 -pass plik:/etc/mysql/keys/enc_paswd.klucz -in /etc/mysql/keys/enc_key.txt -out /etc/mysql/keys/enc_key.enc && sudo rm /etc/mysql/keys/enc_key.tekst

Usuwamy również nasze enc_keys.tekst plik, ponieważ nie jest już wymagany. Poza tym zawsze możemy odszyfrować nasze dane w MariaDB, o ile nasz plik haseł jest bezpieczny.

Konfiguracja wtyczki do zarządzania kluczami plików

Skonfigurujemy teraz MariaDB za pomocą wtyczki File Key Management, dodając następujące zmienne w pliku konfiguracyjnym. Pliki konfiguracyjne zwykle znajdują się w '/etc/mysql' i przeczytaj wszystkie .domyślnie pliki cnf. Lub możesz utworzyć nowy plik konfiguracyjny „mariadb_enc.CNF” pod '/etc/mysql/conf.re/ informator.

Teraz twój plik konfiguracyjny może wyglądać zupełnie inaczej niż ten. Dodaj jednak te zmienne szyfrowania w [sqld]. Jeśli klucz jest zaszyfrowany, wtyczka wymaga do skonfigurowania dwóch zmiennych systemowych, i.mi., file_key_management_filename i file_key_management_filekey.

[sqld]
#Wtyczka do zarządzania kluczami plików
plugin_load_add=zarządzanie_kluczem_pliku
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.klucz
# Konfiguracja szyfrowania InnoDB/XtraDB
innodb_default_encryption_key_id = 1
innodb_encrypt_tables = WŁ
innodb_encrypt_log = WŁ
innodb_encryption_threads = 4
# Konfiguracja szyfrowania Aria
aria_encrypt_tables = WŁ
# Szyfrowanie temp. i dziennika
szyfruj-tmp-disk-tables = 1
szyfruj-pliki-tmp = 1
encrypt_binlog = WŁ

Szczegółowe informacje na temat każdej zmiennej systemowej można znaleźć na oficjalnej stronie MariaDB.

Zabezpieczanie pliku z hasłami

Zmienimy nasze uprawnienia do katalogu MySQL, aby zabezpieczyć hasło i inne wrażliwe pliki. Własność MariaDB zostanie zmieniona na bieżącego użytkownika, którym w Ubuntu jest mysql.

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

Teraz zmienimy hasło i uprawnienia do zaszyfrowanych plików na

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

Teraz uruchom ponownie usługę bazy danych.

usługa sudo restart mysql

Wniosek

Z tego artykułu dowiesz się, w jaki sposób szyfrowanie na poziomie bazy danych jest potrzebą godziny i jak możemy skonfigurować szyfrowanie w spoczynku w MariaDB. Jedyną wadą wtyczki File Key Management jest to, że nie obsługuje ona rotacji kluczy. Jednak oprócz tej wtyczki, wiele innych rozwiązań szyfrowania zarządzania kluczami, i.mi., Wtyczka do zarządzania kluczami AWS i Wtyczka do zarządzania kluczami Eperi. Więcej informacji na temat tych wtyczek można znaleźć na oficjalnej stronie MariaDB.

Gry Jak zwiększyć FPS w Linuksie??
Jak zwiększyć FPS w Linuksie??
FPS oznacza Klatki na sekundę. Zadaniem FPS jest pomiar liczby klatek na sekundę podczas odtwarzania wideo lub wydajności gier. W prostych słowach lic...
Gry Najlepsze gry w laboratorium aplikacji Oculus
Najlepsze gry w laboratorium aplikacji Oculus
Jeśli jesteś posiadaczem gogli Oculus, musisz wiedzieć o sideloadingu. Sideloading to proces instalowania w zestawie nagłownym treści innych niż sklep...
Gry Top 10 Games to Play on Ubuntu
Top 10 Games to Play on Ubuntu
Windows platform has been one of the dominating platforms for gaming because of the huge percentage of games that are developing today to natively sup...