Najlepsze wskazówki dotyczące bezpieczeństwa MySQL i MariaDB
Opublikowany: 2022-01-08Bezpieczeństwo jest dla wielu osób dużym problemem. Ten post zawiera dziesięć wskazówek, jak osiągnąć bezpieczeństwo MySQL i MariaDB, aby zabezpieczyć swoje bazy danych przed hakerami. Te wskazówki obejmują: tworzenie kopii zapasowych danych, używanie silnych haseł i ograniczanie uprawnień dostępu.
Najlepsze wskazówki dotyczące bezpieczeństwa MySQL i MariaDB
Oto najlepsze wskazówki, jak osiągnąć bezpieczeństwo MySQL i MariaDB:
Usuń użytkowników bez hasła
Jeśli masz użytkowników w swojej bazie danych bez haseł, najlepiej je usunąć. Pomoże to zmniejszyć szanse, że ktoś będzie w stanie włamać się do Twojej bazy danych. Aby usunąć tych użytkowników, możesz użyć następującego zapytania:
Niezależnie od tego, czy użytkownicy mają dostęp tylko z hosta lokalnego, należy je usunąć, aby uniemożliwić uruchamianie negatywnych poleceń. Ponadto słabe hasła same w sobie stanowią zagrożenie dla bezpieczeństwa.
Zawsze powinieneś używać silnych haseł podczas tworzenia użytkowników w swoich bazach danych. Słabe hasła są łatwiejsze do złamania przez hakerów, co może prowadzić do uzyskania przez nich dostępu do Twojej bazy danych i siania w niej spustoszenia, jeśli sobie z tym poradzą. Korzystanie z automatycznego generatora haseł pomoże Ci stworzyć silniejsze hasła, które są trudniejsze do złamania.
Powinieneś także rozważyć użycie uwierzytelniania dwuskładnikowego dla swoich użytkowników. Będzie to wymagało dodatkowego kodu, zwykle wysyłanego na ich telefon, w celu zalogowania się do bazy danych. To sprawia, że uzyskanie dostępu jest znacznie trudniejsze dla kogoś, kto zna tylko Twoją nazwę użytkownika i hasło.
Ogranicz zdalny dostęp
Jeśli nie musisz udzielać zdalnego dostępu do swojej bazy danych, najlepiej go ograniczyć. Pomoże to zmniejszyć szanse, że ktoś będzie w stanie włamać się do Twojej bazy danych ze zdalnej lokalizacji.
Na szczęście najnowsze wersje MySQL i MariaDB automatycznie ograniczają zdalny dostęp do bazy danych, chyba że określono inaczej. Jednak nadal powinieneś sprawdzić ustawienia zabezpieczeń, aby upewnić się, że tak jest.
Dobrym pomysłem jest również upewnienie się, że wszyscy użytkownicy łączą się z MySQL tylko przez te hosty, których sobie życzysz. Na przykład można to zrobić za pomocą ([email protected]).
Usuń testową bazę danych
Podczas instalacji MySQL lub MariaDB automatycznie tworzona jest testowa baza danych. Ta baza danych zawiera dane, które można wykorzystać do włamania się do prawdziwych baz danych, jeśli wpadną w niepowołane ręce. Najlepiej usunąć tę bazę danych, aby nie można jej było używać do nikczemnych celów.
Ta testowa baza danych powoduje również niepotrzebne obciążenie serwera bazy danych. Jest używany tylko przez testerów baz danych do testowania zapytań, więc można go usunąć bez wpływu na funkcjonalność baz danych.
Ukryj dostęp do MySQL
Jeśli nie chcesz, aby ludzie wiedzieli, że Twoja baza danych istnieje, możesz zaciemnić jej dostęp. Utrudni to komuś znalezienie Twojej bazy danych i włamanie się do niej.
Zaciemnianie dostępu utrudnia również każdemu, kto monitoruje Twój ruch, ustalenie, które porty są używane przez MySQL lub MariaDB.
Powszechnie wiadomo, że MySQL działa na porcie 3306, podczas gdy „root” to nazwa superużytkownika. Możesz to naprawić, edytując my.cnf i zmieniając zmienną „port”.
Zabezpiecz swoje pliki konfiguracyjne
Podobnie jak w przypadku każdej aplikacji, ważne jest, aby zabezpieczyć pliki konfiguracyjne dla MySQL lub MariaDB. Pliki te zawierają poufne informacje, takie jak hasła i dane użytkownika. Zabezpieczenie tych plików pomoże uniemożliwić każdemu uzyskanie dostępu do tych informacji, jeśli uzyska dostęp do Twoich serwerów.
Bezpieczeństwo sieci
Ważne jest również, aby zabezpieczyć swoją sieć, a także same serwery. Pomoże to zmniejszyć szanse, że ktoś włamie się do Twojej bazy danych ze zdalnej lokalizacji i uruchomi na niej nikczemne polecenia.
Pierwszą rzeczą, którą powinieneś upewnić się, jest to, że MySQL jest dostępny tylko przez połączenie lokalne, a nie sieć. Możesz to zrobić za pomocą gniazda Unix. Wpisz 'skip-networking' do my.cnf. aby zatrzymać całą komunikację TCP/IP.

Możesz także użyć zapory sieciowej, aby zablokować dostęp do MySQL z niektórych adresów IP lub zakresów. Pomoże to zmniejszyć szanse, że ktoś włamie się do Twojej bazy danych ze zdalnej lokalizacji.
Użyj wtyczek audytu
Możesz także użyć wtyczek audytu, aby śledzić, co dzieje się w Twojej bazie danych. Pomogą Ci one ustalić, czy ktoś włamał się do Twojej bazy danych lub czy dzieje się z nią coś podejrzanego, co mogłoby to sugerować.
Obecnie w Internecie dostępnych jest wiele darmowych i płatnych opcji tych wtyczek. MySQL Enterprise Audit to dobra opcja, jeśli MySQL Enterprise jest już używany w Twojej organizacji. MariaDB ma również własną wtyczkę audytu.
Wszystkie te wtyczki świetnie sprawdzają się w monitorowaniu bazy danych pod kątem podejrzanej aktywności. Mogą nawet wysyłać Ci alerty, jeśli wykryje coś niezwykłego, dzięki czemu nie musisz za każdym razem ręcznie sprawdzać dzienników.
Wyłącz LOAD DATA LOCAL INFILE
Innym sposobem uniemożliwienia komuś uzyskania dostępu do bazy danych jest wyłączenie funkcji LOCAL w MySQL i MariaDB. To polecenie umożliwia wczytanie plików danych z pliku lokalnego, ale stwarza również zagrożenie bezpieczeństwa — zwłaszcza jeśli nie są zaszyfrowane. Aby wyłączyć tę funkcję, ustaw local-infile=0 w my.cnf.
Uprawnienia do plików
Ważne jest również, aby ustawić poprawne uprawnienia do plików dla plików MySQL i MariaDB. Dzięki temu tylko autoryzowani użytkownicy będą mogli uzyskać do nich dostęp. Możesz to zrobić, ustawiając odpowiednie uprawnienia do tych plików.
Na przykład, możesz ustawić właściciela wszystkich plików MySQL na „mysql”, a grupę na „mysql”, a wszystkim innym użytkownikom odmówić dostępu. Dzięki temu tylko użytkownicy z odpowiednimi uprawnieniami będą mogli uzyskać dostęp do Twoich plików MySQL.
SSL i szyfrowanie danych w tranzycie
Jeśli korzystasz z MySQL lub MariaDB z włączonym SSL, ważne jest, aby na serwerze były zainstalowane niezbędne certyfikaty. Jeśli nie zostanie to zrobione, każdy może przechwycić informacje przesyłane między Twoją bazą danych a jej klientami.
Należy również szyfrować wszystkie przesyłane dane, aby zapewnić dodatkową ochronę wszelkich poufnych danych przesyłanych przez sieci publiczne za pomocą protokołu SSH.
Możesz także zaszyfrować dane przesyłane między serwerem bazy danych a innymi urządzeniami. Zapewni to, że każdy monitorujący ruch w Twojej sieci nie będzie miał dostępu do żadnych danych, które przesyła lub odbiera, nawet jeśli udało mu się włamać do jednego z tych systemów.
SSL byłby świetnym sposobem na osiągnięcie tego dla użytkowników MySQL, ponieważ jest już wbudowany w protokół. Użytkownicy MariaDB mogą użyć stunnel, aby osiągnąć podobny efekt.
Szyfrowanie danych w spoczynku
Na koniec powinieneś również rozważyć szyfrowanie danych w spoczynku. Oznacza to, że dane są szyfrowane nawet wtedy, gdy nie są przesyłane.
Można to zrobić za pomocą narzędzia takiego jak MySQL Enterprise Encryption lub MariaDB Column Encryption.
Oba te narzędzia oferują świetny sposób ochrony danych przed dostępem, jeśli komuś uda się włamać na serwer bazy danych. Są również bardzo łatwe w użyciu, więc nie musisz być ekspertem w szyfrowaniu, aby skorzystać z tych narzędzi.
Wniosek
Wszystkie wymienione tutaj opcje pomogą Ci osiągnąć bezpieczeństwo MySQL i MariaDB, ale nie wszystkie są idealne dla każdej sytuacji. Przyglądając się im, powinieneś wziąć pod uwagę swoje specyficzne potrzeby, aby wybrać najlepszą z możliwych. Jednak te wskazówki powinny dać ci dobry pomysł, jak wybrać opcję, która będzie dla ciebie odpowiednia.
Mamy nadzieję, że ten artykuł dał Ci kilka dobrych pomysłów na to, jak osiągnąć bezpieczeństwo MySQL i MariaDB w Twojej organizacji, aby nikt nie mógł włamać się do Twoich baz danych, jeśli zdoła przebić się przez inne zabezpieczenia.