12 Mysql/Mariadb Security Najlepsze praktyki dla Linux

12 Mysql/Mariadb Security Najlepsze praktyki dla Linux

Mysql to najpopularniejszy system bazy danych open source na świecie i Mariadb (Widelec MySQL) to najszybciej rozwijający się system bazy danych open source na świecie. Po zainstalowaniu MySQL Server jest on niepewny w jego domyślnej konfiguracji, a zabezpieczenie jej jest jednym z podstawowych zadań w ogólnej zarządzaniu bazą danych.

Przeczytaj także: Naucz się MySQL/MariaDB dla początkujących - Część 1

Przyczyni się to do utwardzania i zwiększenia ogólnego bezpieczeństwa serwera Linux, ponieważ atakujący zawsze skanują luki w dowolnej części systemu, a bazy danych w przeszłości były kluczowymi obszarami docelowymi. Wspólnym przykładem jest brutalna sformułowanie hasła root dla bazy danych MySQL.

W tym przewodniku wyjaśnimy przydatne Mysql/Mariadb Najlepsze praktyki bezpieczeństwa dla Linux.

1. Zabezpieczyć instalację MySQL

Jest to pierwszy zalecany krok po zainstalowaniu MySQL Server, w kierunku zabezpieczenia serwera bazy danych. Ten skrypt ułatwia poprawę bezpieczeństwa twojego serwera MySQL, prosząc o:

  • Ustaw hasło do konta głównego, jeśli nie ustawiłeś go podczas instalacji.
  • Wyłącz zdalne login użytkownika root, usuwając konta root, które są dostępne spoza lokalnego hosta.
  • Usuń konta anonimowego użytkownika i przetestuj bazę danych, do których domyślnie mogą uzyskać dostęp do wszystkich użytkowników, nawet anonimowych użytkowników.
# mysql_secure_instalation 

Po uruchomieniu ustaw hasło root i odpowiedz na serię pytań, wchodząc [Tak/y] i naciśnij [Wchodzić].

Zabezpieczyć instalację MySQL

2. Powiązaj serwer bazy danych z adresem pętli

Ta konfiguracja ograniczy dostęp do zdalnych maszyn, mówi serwerze MySQL, aby akceptują tylko połączenia z lokalu lokalnego. Możesz ustawić go w głównym pliku konfiguracyjnym.

# vi /etc /my.CNF [RHEL/CENTOS] # VI/etc/mysql/my.conf [debian/ubuntu] lub # vi/etc/mysql/mysql.conf.D/Mysqld.CNF [Debian/Ubuntu] 

Dodaj poniższy wiersz poniżej [Mysqld] Sekcja.

Address z wiązaniem = 127.0.0.1 

3. Wyłącz lokalną infil w MySQL

W ramach hartowania bezpieczeństwa musisz wyłączyć local_infile Aby zapobiec dostępowi do bazowego systemu plików z MySQL za pomocą następującej dyrektywy poniżej [Mysqld] Sekcja.

Lokalny infile = 0 

4. Zmień domyślny port MySQL

Port Zmienna ustawia numer portu MySQL, który zostanie użyty do słuchania w połączeniach TCP/ IP. Domyślny numer portu to 3306 Ale możesz to zmienić pod [Mysqld] sekcja jak pokazano.

Port = 5000 

5. Włącz rejestrowanie MySQL

Dzienniki są jednym z najlepszych sposobów zrozumienia, co dzieje się na serwerze, w przypadku wszelkich ataków można łatwo zobaczyć wszelkie działania związane z ingerencją z plików dziennika. Możesz włączyć rejestrowanie MySQL, dodając następującą zmienną w ramach [Mysqld] Sekcja.

log =/var/log/mysql.dziennik 

6. Ustaw odpowiednie uprawnienia do plików MySQL

Upewnij się, że masz odpowiednie uprawnienia dla wszystkich plików i katalogów danych MySQL Server. /itp./mój.conf Plik powinien być napisany tylko do korzenia. To blokuje innych użytkowników przed zmianą konfiguracji serwera bazy danych.

# chmod 644 /etc /my.CNF 

7. Usuń historię powłoki mysql

Wszystkie polecenia, które wykonujesz na MySQL Shell, są przechowywane przez klienta MySQL w pliku historii: ~/.mysql_history. Może to być niebezpieczne, ponieważ dla wszystkich kont użytkowników, które utworzysz, wszystkie nazwy użytkowników i hasła wpisane na powłoce będą rejestrowane w pliku historii.

# cat/dev/null> ~/.mysql_history 

8. Nie uruchamiaj poleceń MySQL z Commandline

Jak już wiesz, wszystkie polecenia wpisane na terminalu są przechowywane w pliku historii, w zależności od używanej powłoki (na przykład ~/.bash_history dla Bash). Atakujący, który udaje się uzyskać dostęp do tego pliku historii, może łatwo zobaczyć nagrane tam hasła.

Zdecydowanie nie zaleca się pisania haseł w wierszu poleceń, coś takiego:

# mysql -u root -ppassword_ 
Podłącz MySQL z hasłem

Po sprawdzeniu ostatniej sekcji pliku historii poleceń zobaczysz hasło pisane powyżej.

# Historia 
Sprawdź historię poleceń

Odpowiednim sposobem połączenia MySQL jest.

# mysql -u root -p Wprowadź hasło: 

9. Zdefiniuj użytkowników bazy danych specyficznych dla aplikacji

Dla każdej aplikacji działającej na serwerze daj tylko dostęp użytkownika, który jest odpowiedzialny za bazę danych dla danej aplikacji. Na przykład, jeśli masz witrynę WordPress, utwórz określonego użytkownika dla bazy danych witryny WordPress w następujący sposób.

# mysql -u root -p mariadb [(brak)]> Utwórz bazę danych osclass_db; Mariadb [(none)]> Utwórz użytkownika „OSCLASSDMIN”@'localHost' Zidentyfikowane przez '[e -mail chronione]%!2 '; Mariadb [(none)]> daj wszystkie uprawnienia na OSCLASS_DB.* Do „osclassdmin”@„localHost”; Mariadb [(none)]> Przywileje spłukające; Mariadb [(none)]> wyjście 

I pamiętaj, aby zawsze usuwać konta użytkowników, które nie zarządzają żadną bazą danych aplikacji na serwerze.

10. Użyj dodatkowych wtyczek i bibliotek bezpieczeństwa

MySQL zawiera szereg wtyczek bezpieczeństwa: uwierzytelnianie prób podłączenia się do MySQL Server, walidację hasłem i zabezpieczanie pamięci dla poufnych informacji, które są dostępne w bezpłatnej wersji.

Możesz znaleźć więcej tutaj: https: // dev.Mysql.com/doc/refman/5.7/EN/PLUGINS.html

11. Regularnie zmieniać hasła MySQL

To powszechna informacja/porada bezpieczeństwa aplikacji/systemu. Jak często to zrobisz, będzie całkowicie zależeć od Twojej polityki bezpieczeństwa wewnętrznego. Może to jednak zapobiec „szpiegom”, którzy mogli śledzić twoją aktywność przez długi czas, od uzyskania dostępu do serwera MySQL.

Mariadb [(brak)]> Użyj mysql; Mariadb [(brak)]> Zaktualizuj Ustaw użytkownika hasło = hasło ('Twój Passwordhere') Gdzie user = "root" i host =' localHost '; Mariadb [(brak)]> Przywileje spłukiwane; 

12. Regularnie aktualizuj pakiet MySQL Server

Zdecydowanie zaleca się regularne zaktualizowanie pakietów MySQL/MariaDB, aby nadążyć za aktualizacjami bezpieczeństwa i poprawkami błędów, z repozytorium dostawcy. Zwykle pakiety w domyślnych repozytoriach systemu operacyjnego są przestarzałe.

# Aktualizacja Yum # APT Aktualizacja 

Po wprowadzeniu jakichkolwiek zmian na serwerze MySQL/Mariadb, zawsze uruchom ponownie usługę.

# Systemctl restart mariadb # RHEL/CENTOS # Systemctl restart Mysql # debian/ubuntu 

Przeczytaj także: 15 Przydatne wskazówki dotyczące wydajności MySQL/MARIADB

To wszystko! Uwielbiamy usłyszeć od ciebie za pośrednictwem poniższego formularza komentarza. Udostępnij nam wszelkie porady dotyczące bezpieczeństwa MySQL/MARIADB, które brakuje na powyższej liście.