Celem tego ćwiczenia jest nauczenie Cię podstawowych, ale kluczowych kroków w zabezpieczaniu serwera MariaDB/MySQL. Dowiesz się, dlaczego domyślna konfiguracja, zwłaszcza w pakietach takich jak XAMPP, jest niebezpieczna i jakie kroki należy podjąć, aby ją wzmocnić. Nauczysz się usuwać anonimowych użytkowników, ograniczać zdalny dostęp dla konta root oraz pozbywać się testowych baz danych, które mogą stanowić potencjalne zagrożenie.
Jako administrator nowo zainstalowanego serwera baz danych, Twoim kolejnym zadaniem jest jego "utwardzenie" (ang. hardening). Domyślna instalacja, choć wygodna do nauki, pozostawia otwarte drzwi dla potencjalnych atakujących. Istnieją anonimowe konta użytkowników, które pozwalają na logowanie bez hasła, a konto root może być dostępne z dowolnego miejsca w sieci, co jest ogromnym ryzykiem. Dodatkowo, instalator tworzy testową bazę danych o nazwie test, do której każdy ma dostęp. Twoim zadaniem jest przeprowadzenie audytu bezpieczeństwa i systematyczne eliminowanie tych słabości. W systemach Linux proces ten jest często zautomatyzowany przez skrypt mysql_secure_installation. Na Windows w XAMPP musisz wykonać te kroki manualnie, co da Ci lepsze zrozumienie, co dzieje się "pod maską". Prześledzisz listę użytkowników, zidentyfikujesz i usuniesz niepotrzebne konta, a następnie sprawdzisz, czy zdalne logowanie dla root jest wyłączone. Na koniec usuniesz zbędną bazę testową. Zmodyfikujesz również plik konfiguracyjny my.ini, aby na stałe zablokować niektóre niebezpieczne opcje, takie jak możliwość ładowania plików z dowolnej lokalizacji.
cmd.exe, przejdź do katalogu C:\xampp\mysql\bin i zaloguj się na konto roota: mysql -u root -p.%.
        ''@'localhost'). W nowszych wersjach XAMPP zazwyczaj ich nie ma, ale zawsze warto to sprawdzić.DROP USER.
            root nie może logować się z żadnego innego hosta niż localhost lub 127.0.0.1. Jeśli na liście użytkowników widzisz wpis 'root'@'%', jest to bardzo niebezpieczne.'root'@'localhost' ma ustawione hasło. Zrobiliśmy to w poprzednim zadaniu, ale zawsze warto to sprawdzić. Możesz to zweryfikować, próbując zalogować się bez hasła.test, która jest dostępna dla każdego. Wyświetl listę baz, aby ją zlokalizować:
            test istnieje na liście, usuń ją:
            test istnieją też uprawnienia do niej przypisane. Można je usunąć.
             my.ini: Otwórz Panel Kontrolny XAMPP, kliknij przycisk Config przy module MySQL i wybierz my.ini. Plik otworzy się w Notatniku.[mysqld]: W pliku my.ini odszukaj sekcję oznaczoną jako [mysqld].bind-address: Aby mieć pewność, że serwer nasłuchuje tylko na lokalnym adresie, dodaj lub odkomentuj (usuń # na początku linii) i ustaw następującą linię. To uniemożliwi połączenia z innych komputerów w sieci.
            my.ini. Aby zmiany weszły w życie, musisz zrestartować serwer MySQL. W Panelu Kontrolnym XAMPP kliknij Stop, a następnie Start.mysql_secure_installation (Linux): W systemach Linux, wszystkie powyższe kroki (i kilka dodatkowych) można wykonać za pomocą interaktywnego skryptu. Uruchamia się go poleceniem sudo mysql_secure_installation. Skrypt zadaje serię pytań, m.in. o ustawienie hasła roota, usunięcie anonimowych użytkowników, wyłączenie zdalnego logowania roota i usunięcie bazy testowej.Poniżej znajdziesz polecenia SQL do wykonania w monitorze MySQL w celu zabezpieczenia serwera.
-- Krok 1: Sprawdzenie listy uzytkownikow SELECT User, Host FROM mysql.user; -- Krok 2: Usuniecie anonimowych uzytkownikow (jesli istnieja) -- To polecenie moze zwrocic blad, jesli uzytkownik nie istnieje. DROP USER IF EXISTS ''@'localhost'; -- Krok 3: Usuniecie zdalnego dostepu dla roota (jesli istnieje) DROP USER IF EXISTS 'root'@'%'; -- Krok 4: Usuniecie testowej bazy danych (jesli istnieje) DROP DATABASE IF EXISTS test; -- Krok 5: Usuniecie uprawnien do bazy testowej DELETE FROM mysql.db WHERE Db IN ('test', 'test\\_%'); -- Krok 6: Przeladowanie uprawnien FLUSH PRIVILEGES;
+---------------------------------------------------+
|                                                   |
|   MariaDB [(none)]> SHOW DATABASES;               |
|   +--------------------+                          |
|   | Database           |                          |
|   +--------------------+                          |
|   | information_schema |                          |
|   | mysql              |                          |
|   | performance_schema |                          |
|   | phpmyadmin         |                          |
|   | test               |                          |
|   +--------------------+                          |
|   5 rows in set (0.001 sec)                       |
|                                                   |
|   MariaDB [(none)]> DROP DATABASE test;           |
|   Query OK, 0 rows affected (0.002 sec)           |
|                                                   |
+---------------------------------------------------+
    
    my.ini (Windows) lub my.cnf (Linux) to serce konfiguracji serwera. Znajduje się w nim wiele opcji, które mają wpływ na wydajność, bezpieczeństwo i zachowanie serwera. Warto zapoznać się z jego dokumentacją.