Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Podłączanie serwera Bastion do serwera PostgreSQL przez tunel SSH

PostgreSQL to dobrze znany system zarządzania relacyjnymi bazami danych, który oferuje bezpieczne środowisko dla programistów i użytkowników. Ale ponieważ praca zdalna nadal jest częścią nowej normy każdej firmy, specjaliści IT stają przed nowymi wyzwaniami, jeśli chodzi o zarządzanie bezpieczeństwem i dostępnością swoich serwerów.

Korzystanie z serwera bastionu w celu uzyskania dostępu do bazy danych PostgreSQL dodaje dodatkową warstwę bezpieczeństwa. Ale ponieważ serwery bastionu powinny działać jak zapory ogniowe, konieczne jest użycie tunelu Secure Shell (SSH), aby obniżyć poziom narażenia sieci prywatnej.

Wiele narzędzi do zarządzania bazą danych PostgreSQL może zautomatyzować ten proces połączenia, ale interakcja z powłoką wymaga ręcznego utworzenia tunelu SSH. Zrozumienie procesu i środków ostrożności z pewnością może pomóc Twojej firmie w utrzymaniu bezpiecznych baz danych.

Zalety tworzenia i używania tunelu SSH Secure Shell

Tunelowanie SSH jest używane w komunikacji sieciowej od ponad trzydziestu lat i jest tak samo istotne dla dzisiejszych potrzeb obliczeniowych.

Programiści konsekwentnie sięgają po protokoły SSH Secure Shell do zarządzania dostępem do baz danych na wszelkiego rodzaju serwerach, w tym PostgreSQL. Bezpieczny dostęp zdalny ma dziś kluczowe znaczenie, zwłaszcza gdy 50% urządzeń w miejscu pracy to urządzenia mobilne (urządzenia mobilne są jednymi z najbardziej podatnych na cyberataki). To sprawia, że ​​jeszcze ważniejsze jest, aby organizacje mogły zdalnie zarządzać urządzeniami i dostępem użytkowników do ich sieci.

Firmy obsługujące duże ilości danych muszą zapewniać pracownikom szybki dostęp do głównych baz danych i proaktywnie podchodzić do bezpieczeństwa baz danych. Korzystanie z protokołów SSH jest numerem jeden w zapewnianiu bezpiecznego dostępu użytkownikom ze zdalnych serwerów. Ułatwia również uwierzytelnianie automatycznych programów. Dzięki temu firmy mogą wydajniej wykonywać swoje codzienne zadania.

Ponieważ standardy bezpieczeństwa w końcu nadążają za urządzeniami mobilnymi i zdalnymi serwerami, możemy spodziewać się również poprawy protokołów szyfrowania i uwierzytelniania. Elastyczność i interoperacyjność to przyszłość bezpieczeństwa IoT. Mimo to protokoły SSH nadal będą standardową częścią w najbliższej przyszłości.

Jak działa SSH?

Protokoły SSH umożliwiają zdalną kontrolę dostępu do serwerów przez Internet w bezpiecznym środowisku. Nie tylko początkowe połączenie jest wysoce zabezpieczone, ale także cała sesja komunikacyjna między dwiema stronami. Użytkownicy mogą logować się do zdalnego serwera za pomocą otwartego tunelu SSH Secure Shell lub innych klientów SSH Secure Shell.

Serwer szuka połączenia z otwartym portem. Gdy go znajdzie, serwer musi uwierzytelnić połączenie. Określa, czy ustanowiono bezpieczne środowisko do komunikacji i przesyłania plików. Jeśli połączenie jest inicjowane przez klienta, klient oprócz podania swoich poświadczeń musi uwierzytelnić serwer.

Po uwierzytelnieniu obu stron i nawiązaniu połączenia protokół szyfrowania SSH zapewnia ciągłą prywatność wszystkich transmisji danych między serwerem a klientem.

Istnieją trzy rodzaje szyfrujących tuneli SSH używanych do zabezpieczania połączeń:

  • szyfrowanie symetryczne
  • szyfrowanie asymetryczne
  • hasze.

Szyfrowanie symetryczne jest używany przez czas trwania połączenia w celu zapewnienia bezpieczeństwa komunikacji. Zarówno klient, jak i serwer współdzielą ten sam tajny klucz do szyfrowania i odszyfrowywania danych. Ten algorytm jest bezpieczny, ponieważ rzeczywisty klucz nigdy nie jest wymieniany. Obie strony udostępniają informacje publiczne, z których mogą niezależnie uzyskać klucz.

Szyfrowanie asymetryczne , z kolei wymaga zarówno klucza publicznego, jak i prywatnego. Jest używany na początku procesu tunelowania do uwierzytelniania serwerów. Serwer użyje klucza publicznego do zaszyfrowania tych danych, a klient musi je uwierzytelnić za pomocą klucza prywatnego. Ponieważ konkretny klucz prywatny jest jedyną rzeczą, która może odszyfrować wiadomości zaszyfrowane kluczem publicznym, pomaga to uwierzytelnić strony szukające połączenia.

Hashowanie kryptograficzne tworzy unikalny podpis dla zestawu danych. Jest to pomocne w połączeniu SSH, ponieważ pozwala serwerowi dowiedzieć się, czy adres MAC jest akceptowalny. Dopasowany skrót może być utworzony tylko przez fragment danych identyczny z tym, który utworzył oryginał. W ten sposób haszowanie może być używane do sprawdzania danych wejściowych, aby upewnić się, że jest to prawidłowe.

Uwierzytelnianie SSH

Po ustanowieniu szyfrowania następuje proces uwierzytelniania. Najprostszą formą uwierzytelnienia jest użycie hasła. Chociaż jest to łatwy sposób dla klientów, jest również bardzo łatwy w przypadku złośliwych automatycznych skryptów. Nawet zaszyfrowane hasło ma ograniczoną złożoność. To sprawia, że ​​jest niepewny. Używanie kluczy asymetrycznych jest powszechnym środkiem zamiast używania haseł.

Po ustanowieniu klucza publicznego klient musi dostarczyć klucz prywatny, który jest powiązany z kluczem publicznym. Bez tej kombinacji uwierzytelnianie nie powiedzie się. Pomaga to zapewnić, że zaszyfrowane dane nie zostaną odszyfrowane przez intruza.

Cały proces uwierzytelniania jest negocjowany podczas konfiguracji i tylko strony z kluczami uzupełniającymi mogą się komunikować. Ten proces przyspiesza również proces logowania. Jest więc optymalny do zautomatyzowanych procedur.

Proces uwierzytelniania będzie się różnić w zależności od następujących czynników:

  • rodzaj chronionej bazy danych
  • relacja i lokalizacja serwera
  • uprawnienia użytkownika na serwerze.

Wspaniałą rzeczą w korzystaniu z protokołu SSH jest to, że cały proces jest szyfrowany i wysoce bezpieczny.

Skonfiguruj tunel SSH

Jeśli chcesz komunikować się z bazą danych za pomocą powłoki, musisz wiedzieć, jak utworzyć tunel SSH. Chociaż korzystanie ze zautomatyzowanej aplikacji do zarządzania SSH może być wygodne, wielu administratorów baz danych woli konfigurować narzędzia do zarządzania bazą danych od zera, ponieważ interakcja z powłoką jest najlepszym sposobem na debugowanie, audyt i uzyskanie maksymalnej kontroli.

Korzystanie z tunelu SSH to bardzo bezpieczny sposób na otwarcie sesji bez obawy o utratę danych lub zhakowanie (o ile zamykasz sesje i monitorujesz swoje serwery).

Oto jak utworzyć tunel SSH:

Zweryfikuj serwer Bastion

Aby utworzyć tunel SSH Secure Shell, musisz znać nazwy hostów serwera bastionu i bazy danych PostgreSQL, a także swoją nazwę użytkownika na serwerze bastionu. Uruchom polecenie:

$ ssh <username>@<bastion_server>

Następnie wprowadź swoje hasło, gdy pojawi się odpowiednie okno.

Otwórz tunel SSH

Otwórz tunel za pomocą tego polecenia:

$ ssh -L localhost:port_number:<sql_server>:port_number<username>@<bastion_server>

Pozostaw okno otwarte, aby utrzymać połączenie. Numery dwóch portów dotyczą odpowiednio komputera i serwera zdalnego.

Zweryfikuj swoje połączenie

Aby upewnić się, że tunel jest otwarty i połączony z serwerem PostgreSQL, użyj następującego polecenia:

$ psql --port=X --host=localhost -c "SELECT * FROM pg_catalog.pg_tables"

Sprawdź, czy tabele są zwracane. Jeśli tak, oznacza to, że połączenie było udane i bezpieczne.

Kilka opcjonalnych kroków może zwiększyć wydajność dostępu z hosta bastionu do serwera SQL. Pamiętaj jednak, że automatyzacja dostępu przez cały czas nie jest bezpieczną strategią. Rozsądnie jest zawsze logować się za każdym razem, gdy chcesz otworzyć tunel SSH, aby zachować całkowitą prywatność sesji.

Utwórz profil użytkownika

Aby uniknąć konieczności każdorazowego wpisywania haseł, możesz utworzyć profil na serwerze bastionu. Aby to zrobić, musisz dodać swój klucz SSH do serwera za pomocą następującego polecenia:

$ ssh-copy-id <username>@<bastion_server>

Wtedy Twój klucz będzie używany automatycznie za każdym razem, gdy będziesz chciał się zalogować. Ma to jednak zarówno pozytywne, jak i negatywne aspekty. Jest to wygodniejsze, ale musisz upewnić się, że masz inne protokoły bezpieczeństwa, aby chronić komputer przed złośliwym oprogramowaniem lub kradzieżą. Jeśli ktoś inny uzyska dostęp do twojego komputera, może być w stanie automatycznie zalogować się na twoje serwery, ponieważ twój klucz jest zapisany.

Zaktualizuj plik konfiguracyjny SSH

Zapamiętywanie dokładnych nazw i numerów portów serwerów, z którymi chcesz się połączyć, może być skomplikowane. Dlatego jest częścią protokołu tunelowego SSH Secure Shell.

Śledzisz nazwy hostów i uwierzytelniasz się za pomocą swojej nazwy użytkownika. Jest to część tego, co sprawia, że ​​połączenie SSH jest przede wszystkim bezpieczne. Istnieje jednak sposób na skonfigurowanie procedury tak, aby dostęp był szybszy i łatwiejszy bez pełnej automatyzacji procesu. Możesz dodać wpis do pliku konfiguracyjnego SSH:

Hostowanie produkcji bastionów

  • Nazwa hosta
  • Użytkownik
  • LocalForward host lokalny:numer_portu:numer_portu

Następnie uruchom polecenie:

$ ssh bastion-production 

Teraz możesz połączyć się w jednym kroku.

Wskazówki dotyczące prywatności SSH

Konieczne jest zapewnienie bezpieczeństwa baz danych. Dane są najcenniejszą walutą na świecie, a wraz z rozwojem oprogramowania ransomware i innych cyberprzestępczości brak ochrony danych klientów jest niedopuszczalną pomyłką.

Celem korzystania z serwera bastionu jest przede wszystkim ochrona bazy danych. Jednak kilka błędnych kroków pozostawiłoby serwery szeroko otwarte dla każdego.

Oto kilka wskazówek, jak zachować bezpieczeństwo podczas korzystania z tuneli SSH do łączenia się z serwerami PostgreSQL:

Właściwie uwierzytelniaj pracowników zdalnych

Jeśli Twoja organizacja używa SSH do zdalnego łączenia się, wszyscy muszą znać podstawy higieny cyfrowej. Użyj uwierzytelniania opartego na kluczu, które jest chronione silnym hasłem. Weryfikacja dwuetapowa dla każdego logowania jest również dobrym miejscem na rozpoczęcie, a także upewnienie się, że publiczne klucze SSH są autentyczne.

Ogranicz logowanie SSH tylko do tych, którzy ich potrzebują, i ustaw uprawnienia, które odzwierciedlają zadania użytkowników.

Wyłącz przekierowanie portów

Tylko około połowa programistów egzekwuje procedury zapobiegania przekierowaniu portów. Przekierowanie portów może otworzyć Cię na zaszyfrowaną komunikację z niezatwierdzonymi użytkownikami i serwerami. W ten sposób hakerzy mogą wejść bezpośrednio do Twojej bazy danych. Filtruj wszystkie połączenia przez serwer bastionu i rozważ użycie funkcji blokowania portów przed zezwoleniem na połączenie.

Upewnij się, że korzystasz z najnowszego oprogramowania, a połączenia SSH są zgodne z najnowszymi standardami zgodności.

Często kontroluj

Oprócz regularnych ręcznych audytów korzystaj z narzędzia do ciągłego monitorowania. Ogranicz połączenia tylko do tych, które są niezbędne, i sprawdź, czy nie zostały wcześniej zatwierdzone zmiany w ustawieniach konfiguracji.

Obserwując, kto się loguje i jakie czynności wykonuje, możesz ograniczyć powierzchnię ataku i od samego początku łatwo zlokalizować luki w zabezpieczeniach.

Wniosek

Korzystanie z szyfrowanych tuneli SSH to bezpieczny sposób na dostęp do baz danych PostgreSQL ze zdalnych serwerów. Proces utrzymuje szyfrowanie przez cały czas trwania połączonych sesji. Chociaż zautomatyzowane programy SSH są przydatne do zadań cyklicznych i innych procesów administracyjnych systemu, ręczne otwieranie tunelu SSH może być korzystne. W takim przypadku możesz łatwo zidentyfikować cały ruch i komunikację, w przeciwieństwie do korzystania z wersji automatycznej lub klienta.

Jeśli używasz PostgreSQL lub dowolnego systemu zarządzania bazami danych SQL, musisz wiedzieć, jak korzystać z tunelowania SSH. Może mieć kluczowe znaczenie dla monitorowania i zarządzania procesami systemowymi oraz transferami danych.

Protokoły SSH zapewniają bardzo bezpieczne połączenie, a przestrzeganie dodatkowych środków ostrożności pomoże zachować integralność połączeń z serwerem.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Dodaj konto pocztowe bazy danych do profilu (T-SQL)

  2. Jak konwertować między formatami dat w SQL Server za pomocą CAST()

  3. SQL JOIN a wydajność IN?

  4. Nie można znaleźć procedury składowanej „dbo.aspnet_CheckSchemaVersion”

  5. Jak dodać numery linii w SQL Server Management Studio (SSMS) — samouczek SQL Server / TSQL, część 11