Klienci wielkich, masowych firm hostingowych przyzwyczaili się do pewnej wygody: kupują serwer, instalują ulubiony program na domowym komputerze (np. DBeaver czy HeidiSQL), wpisują publiczny adres IP, login, hasło i… są połączeni ze swoją bazą danych.
Brzmi świetnie, prawda? Problem polega na tym, że za tę rzekomą wygodę płaci się gigantyczną cenę w postaci obniżonego bezpieczeństwa. Wystawienie portu bazy danych (najczęściej 3306 dla MySQL/MariaDB) na świat to z architektonicznego punktu widzenia koszmar.
Dlatego, jeśli spróbujesz połączyć się z zewnątrz z bazą danych hostowaną pod kontrolą panelu BSNM, natrafisz na mur. Główny firewall bezlitośnie odrzuci Twój pakiet. Zrobiłem to z pełną premedytacją.
Dlaczego BSNM blokuje dostęp do bazy z zewnątrz?
Więksi gracze na rynku hostingu zostawiają ten port otwarty głównie po to, by ciąć koszty wsparcia technicznego – zwykłemu użytkownikowi łatwiej jest podać IP i hasło, niż tłumaczyć mu tajniki bezpieczeństwa sieciowego. Korporacje muszą jednak stosować potężne, sprzętowe filtry (IPS) i modyfikować silniki baz danych, by te miliony ataków typu brute-force (zgadywania haseł) nie „położyły” im serwerów.
W BSNM hołduję zasadzie Secure by Default (Bezpieczne domyślnie). Zamiast bawić się w analizowanie logów bazy danych (które zmieniają format z wersji na wersję) i obciążać procesor sprawdzaniem, czy ktoś właśnie próbuje złamać Twoje hasło, system rozwiązuje problem u źródła. Baza danych komunikuje się wyłącznie w wewnętrznej, bezpiecznej sieci klatek (Jails). Zewnętrzny internet po prostu jej nie widzi. Jeśli bot nie może w ogóle nawiązać połączenia – nie ma ataku.
Ale co w sytuacji, gdy jako administrator naprawdę musisz dostać się do bazy z zewnątrz, aby wykonać zrzut (dump) albo naprawić tabele w wygodnym programie okienkowym?
Tu do gry wkracza profesjonalne i całkowicie darmowe rozwiązanie.
Magia Tunelu SSH (SSH Port Forwarding)
Nie potrzebujesz instalować skomplikowanych serwerów VPN, zestawiania sieci WireGuard, ani tym bardziej otwierać portów w firewallu. Skoro i tak posiadasz już bezpieczny, szyfrowany dostęp do swojego serwera za pomocą usługi SSH, możesz użyć go jako „opancerzonej rury”, przez którą przepchniesz ruch do swojej bazy danych.
Mechanizm ten nazywa się tunelowaniem SSH. W dużym skrócie: Twój domowy komputer łączy się bezpiecznie z serwerem przez SSH, a następnie serwer SSH „udaje” Ciebie i w Twoim imieniu łączy się lokalnie z bazą danych. Cały ruch między Twoim domem a serwerem jest w 100% zaszyfrowany.
Jak to zrobić? Masz do wyboru dwie drogi.
Metoda 1: Dla fanów programów okienkowych (GUI)
Większość nowoczesnych menedżerów baz danych ma tę funkcję wbudowaną i jej konfiguracja zajmuje dosłownie 10 sekund. Weźmy na warsztat popularnego, darmowego DBeavera lub HeidiSQL:
Podczas tworzenia nowego połączenia, w zakładce głównej podajesz dane swojej bazy tak, jakbyś logował się z samego serwera (czyli jako adres hosta wpisujesz np. 127.0.0.1 lub wewnętrzny adres IP klatki bazy, a następnie podajesz usera bazy i hasło).
Przechodzisz do zakładki SSH Tunnel (lub Network -> SSH tunnel).
Podajesz tam adres IP (lub domenę) swojego głównego serwera BSNM oraz swoje dane logowania SSH (użytkownik i hasło lub klucz prywatny).
Klikasz „Połącz”.
To tyle! Program sam w tle zestawia bezpieczne połączenie, otwiera tunel i przesyła dane do bazy. Baza danych „myśli”, że łączysz się bezpośrednio z serwera, a firewall niczego nie blokuje, bo widzi tylko standardowy, bezpieczny ruch SSH.
Metoda 2: Dla purystów konsolowych (CLI)
Jeśli wolisz terminal lub potrzebujesz podłączyć aplikację, która nie obsługuje tuneli SSH w swoim interfejsie, możesz stworzyć taki tunel samodzielnie jedną komendą:
ssh -L 3306:127.0.0.1:3306 twoj_uzytkownik@adres_serwera
Co tu się właściwie dzieje?
-L 3306: – Otwiera port 3306 na Twoim lokalnym, domowym komputerze.
127.0.0.1:3306 – Mówi serwerowi zdalnemu: „weź cały ruch, który do Ciebie wyślę i przekaż go na swój wewnętrzny adres 127.0.0.1 na port 3306”.
Po wpisaniu tej komendy zostawiasz okno terminala otwarte. Od tego momentu możesz odpalić jakikolwiek program do baz danych na swoim komputerze, wpisać jako host 127.0.0.1 (czyli Twój własny komputer!), a magia SSH prześle to bezpiecznym kanałem prosto do klatki w BSNM.
Podsumowanie
Zamknięcie portu 3306 to nie złośliwość – to fundament bezpiecznej architektury. Korzystając z tunelowania SSH zyskujesz to, co w pracy administratora najważniejsze: pełną swobodę i wygodę działania z zewnątrz, bez jakichkolwiek kompromisów w kwestii bezpieczeństwa Twojego serwera.