Dane są krytycznym zasobem każdej organizacji, a słabo zabezpieczone bazy danych są zbyt często obarczane winą za naruszenia bezpieczeństwa. Ten artykuł zawiera szczegółowe informacje na temat najlepszych praktyk w zakresie bezpieczeństwa serwera SQL, a także najważniejszych kwestii związanych z bezpieczeństwem w celu ochrony baz danych przed złośliwymi atakami.
Bezpieczeństwo danych składa się z trzech podstawowych filarów – poufności, integralności i dostępności (CIA) i dotyczy określonych procesów mających na celu ochronę danych przed zamierzonym i przypadkowym dostępem. Podzielmy różne obszary i kroki, które należy podjąć, gdy zbliżamy się do bezpieczeństwa SQL Server, jednej z najpopularniejszych obecnie używanych relacyjnych baz danych.
Najlepsze praktyki dotyczące bezpieczeństwa SQL Server
1. Zapewnij fizyczne bezpieczeństwo swojego serwera SQL
Jeśli chodzi o bezpieczeństwo SQL Server, nie można pominąć bezpieczeństwa fizycznego. Bezpieczeństwo fizyczne odnosi się do ograniczania nieautoryzowanego dostępu do centrów danych lub innych fizycznych składników serwera. Na przykład możesz wdrożyć zamknięty pokój z ograniczonym dostępem za pomocą karty inteligentnej, odcisku palca lub rozpoznawania twarzy. Możesz także skonfigurować ograniczony segment sieci dla SQL Server.
Centra danych mieszczą infrastrukturę organizacji, taką jak routery, przełączniki, serwery, zapory i urządzenia pamięci masowej. Bezpieczeństwo fizyczne zajmuje się ochroną sprzętu, oprogramowania i sieci przed nieautoryzowanym dostępem lub klęskami żywiołowymi. Może obejmować następujące obszary:
- Zabezpieczenie pomieszczeń i dostępu do sprzętu tylko dla upoważnionych osób
- Utrzymanie systemów kontroli dostępu
- Czujność 24x7x365 z wykorzystaniem ochroniarzy na miejscu lub monitoringu CCTV
- Zasilacz awaryjny (UPS)
- Posiadanie systemu sygnalizacji pożaru i zasysającego systemu wykrywania dymu
- Posiadanie aktywnego panelu wykrywacza wycieków wody
- Systemy odstraszające gryzonie
- Systemy przeciwpożarowe
- Kontrolowanie i monitorowanie temperatury i wilgotności
- Okresowa konserwacja sprzętu
2. Chroń swój system operacyjny
SQL Server jest instalowany na istniejącym systemie operacyjnym, takim jak Windows lub Linux. Dlatego bezpieczeństwo systemu operacyjnego odgrywa kluczową rolę w bezpieczeństwie SQL Server. Poniżej znajduje się kilka zaleceń dotyczących ochrony systemu operacyjnego:
- Zastosuj regularne poprawki bezpieczeństwa systemu operacyjnego i dodatki Service Pack
- Zdefiniuj politykę łatania systemu operacyjnego, która stosuje łatki w niższych środowiskach, a następnie łatanie produkcyjne
- Zawsze używaj stabilnych i obsługiwanych wersji systemu operacyjnego produktu. Na przykład firma Microsoft zakończyła wsparcie dla systemu Windows Server 2003, dlatego nie należy go używać do hostingu baz danych
- Nie zezwalaj na dostęp do Internetu na serwerach baz danych
- Powinieneś odinstalować, zatrzymać lub wyłączyć nieużywane aplikacje i dyski, aby zapewnić mniej możliwości potencjalnych ataków
- Zaimplementuj zaporę z ograniczonym dostępem do serwerów baz danych, tak aby tylko serwery aplikacji wymagające dostępu do serwera bazy danych mogły przepuszczać ruch z zapór
- Otwórz określone porty w zaporze. Na przykład SQL Server domyślnie działa na porcie 1433. W związku z tym można zezwolić portom TCP 1433 i 3389 na zdalny dostęp do serwera, jeśli na serwerze nie jest uruchomiona żadna inna aplikacja. Podobnie usługa analizy używa domyślnego portu 2383 jako portu standardowego. Pełną listę portów w SQL Server znajdziesz w tej dokumentacji dotyczącej portów używanych przez SQL Server. Możesz także użyć certyfikatów SSL lub TLS, aby zabezpieczyć dostęp do SQL Server. Te certyfikaty mogą szyfrować transfer danych między programem SQL Server a aplikacjami klienckimi. W przypadku certyfikatu z podpisem własnym lub certyfikatu wydanego przez urząd certyfikacji (CA) wymagana jest konfiguracja programu SQL Server. Więcej informacji znajdziesz w artykule: Jak konfigurować i używać zaszyfrowanych połączeń SQL Server.
- Wykorzystaj opcję Rozszerzona ochrona uwierzytelniania, aby zapobiec atakowi przekazywania uwierzytelniania przy użyciu powiązania usługi i powiązania kanału. Aby włączyć rozszerzoną ochronę, przejdź do SQL Server Configuration Manager, rozwiń ekran, kliknij prawym przyciskiem myszy Protokoły, a następnie przejdź do Zaawansowane, Rozszerzona ochrona. Pamiętaj, że domyślnie jest to wyłączone.
Podobnie możesz wymusić szyfrowane połączenie z serwerem SQL za pomocą następującej opcji.
Możesz również zapoznać się z rozszerzoną ochroną, aby uzyskać więcej informacji.
3. Zmniejsz swoją powierzchnię
Obszar powierzchni SQL Server składa się z funkcji silnika bazy danych, które zapewniają dodatkowe funkcje, takie jak wysyłanie wiadomości e-mail. Te składniki mogą być potencjalnym celem uzyskania dostępu do programu SQL Server w przypadku złośliwych działań. Dlatego należy wyłączyć nieużywany składnik i funkcje programu SQL Server, ponieważ ograniczy to szanse na potencjalny atak. Poniżej wymieniono główne komponenty, które można przejrzeć i wyłączyć.
- Skanuj w poszukiwaniu procedur startowych
- Procedury automatyzacji OLE
- Włączony CLR
- Łańcuch własności między bazami danych
- xp_cmdshell
- Dyska XP dotyczące poczty bazy danych
Możesz zapoznać się z tym artykułem, aby uzyskać szczegółowe informacje na temat opcji konfiguracji serwera.
4. Skonfiguruj serwer do nasłuchiwania na innym porcie
Microsoft SQL Server używa domyślnego portu 1433 dla wszystkich połączeń z bazą danych. Jest to powszechne zagrożenie bezpieczeństwa w wielu środowiskach baz danych, ponieważ specjaliści ds. baz danych zwykle nie zmieniają domyślnego portu. Jest to dobrze znany port, a intruzi mogą wykorzystać tę możliwość, aby uzyskać dostęp do SQL Server. Dlatego należy użyć portu innego niż domyślny, aby wzmocnić zabezpieczenia programu SQL Server. Możesz to zmienić za pomocą SQL Server Configuration Manager.
5. Dostosuj uwierzytelnianie SQL Server
Ochrona Twoich danych zależy od możliwości uwierzytelnienia dostępu do określonych danych. SQL Server zapewnia dwie opcje uwierzytelniania bazy danych.
- Uwierzytelnianie Windows
- Uwierzytelnianie Windows i SQL (tryb mieszany)
Aby zweryfikować model uwierzytelniania serwera, kliknij prawym przyciskiem myszy instancję SQL Server i przejdź do opcji Bezpieczeństwo.
Uwierzytelnianie systemu Windows wykorzystuje do uwierzytelniania konta Active Directory. Możesz mieć scentralizowaną kontrolę zasad dotyczących złożoności haseł, wygaśnięcia hasła, blokady konta i grup Active Directory w Active Directory. Dlatego należy używać uwierzytelniania systemu Windows zamiast uwierzytelniania programu SQL Server. Tutaj użytkownik łączy się przy użyciu konta systemu Windows, a SQL Server weryfikuje poświadczenia przy użyciu tokenu głównego systemu Windows. Używa protokołu bezpieczeństwa Kerberos do uwierzytelniania. Więcej informacji znajdziesz w trybie uwierzytelniania.
Jeśli jednak musisz użyć loginów SQL Server, nadal możesz wymusić politykę haseł, jak zaznaczono poniżej.
6. Zapamiętaj uprawnienia konta usługi
SQL Services używa konta Windows do uruchamiania swoich usług. Nie należy używać wbudowanych kont o wysokich uprawnieniach, takich jak Usługa sieciowa lub System lokalny. Podobnie w przypadku konta usługi domeny należy przypisać uprawnienia odpowiednie do roli.
Dlatego zalecam zapoznanie się z konfiguracją kont usług i uprawnień systemu Windows, aby uzyskać więcej informacji na temat uprawnień kont usług SQL Server.
7. Zastosuj poprawki SQL Server w środowisku produkcyjnym
Firma Microsoft wydaje regularne dodatki Service Pack (SQL Server 2016 lub starsze) i pakiety zbiorcze (SQL Server 2017 i nowsze) w celu rozwiązania znanych problemów i problemów z zabezpieczeniami. Dlatego zawsze należy planować wdrażanie poprawek SQL Server na wystąpieniach produkcyjnych. Nie należy jednak bezpośrednio stosować poprawek na instancjach produkcyjnych. Zawsze stosuj je najpierw w środowisku testowym, sprawdzaj i planuj wdrożenie produkcyjne.
Możesz zapoznać się z najnowszymi aktualizacjami Microsoft SQL Server, aby znaleźć szczegółowe informacje o najnowszych dodatkach Service Pack i pakietach zbiorczych.
8. Zabezpiecz swoje kopie zapasowe
Jeśli chodzi o bezpieczeństwo SQL Server, zabezpieczenie kopii zapasowych ma kluczowe znaczenie. Zazwyczaj specjaliści od baz danych nie biorą pod uwagę wszystkich wymagań dotyczących zabezpieczania kopii zapasowych baz danych. Backup bazy danych to proces tworzenia kopii stanu operacyjnego, architektury i przechowywanych danych bazy danych. Dlatego równie ważna jest jego ochrona. Oznacza to ograniczenie dostępu do plików kopii zapasowych i ich prawidłowe szyfrowanie. Jeśli chodzi o zabezpieczanie kopii zapasowych, oto kilka przypomnień.
- Nie przydzielaj wszystkim praw w folderze kopii zapasowych do tworzenia, przeglądania, modyfikowania i usuwania plików kopii zapasowych
- Używaj kopii zapasowych bazy danych z szyfrowaniem; więcej informacji znajdziesz w tym artykule o szyfrowaniu kopii zapasowych
9. Pamiętaj o technikach szyfrowania i maskowania danych SQL Server
Kluczowym obszarem w zabezpieczeniach SQL Server jest szyfrowanie. Do ochrony poufnych danych w bazie danych SQL Server można używać różnych mechanizmów szyfrowania. Różne opcje szyfrowania są następujące.
- Zawsze szyfrowane:Technika zawsze zaszyfrowana pomaga w szyfrowaniu poufnych danych w aplikacjach klienckich. Zawsze szyfrowany sterownik umożliwia automatyczne szyfrowanie i odszyfrowywanie wrażliwych danych w aplikacjach klienckich. Klucze szyfrowania nigdy nie są ujawniane silnikowi bazy danych SQL Server. Chroni poufne dane.
- Przejrzyste szyfrowanie danych (TDE):TDE szyfruje dane w spoczynku. Pomaga zabezpieczyć pliki danych, pliki dziennika i pliki kopii zapasowych.
- Szyfrowanie na poziomie kolumny:szyfrowanie na poziomie kolumny pomaga zaszyfrować określone dane kolumn, na przykład numery kart kredytowych i numery ubezpieczenia społecznego.
- Maskowanie danych statycznych:Maskowanie danych statycznych zastępuje dane wrażliwe przy użyciu zdefiniowanych reguł transformacji danych.
- Dynamiczne maskowanie danych:Dynamiczne maskowanie danych pomaga ograniczyć narażenie poufnych danych na nieuprzywilejowanych użytkowników.
- Zabezpieczenia na poziomie wiersza:Zabezpieczenia na poziomie wiersza ograniczają dostęp do wiersza danych.
10. Skomplikuj hasło administratora systemu
Jeśli używasz uwierzytelniania SQL, tworzy ono SA logowania z uprawnieniami sysadmin. Aby zabezpieczyć swój serwer SQL, wykonaj następujące czynności.
- Zmień nazwę loginu o nazwie SA na inną
- Wyłącz konto, jeśli nie planujesz z niego korzystać
- Użyj złożonego hasła
- Nie zezwalaj aplikacjom na używanie konta SA w parametrach połączenia
11. Audytuj logowanie do bazy danych
Inspekcja jest często pomijana, jeśli chodzi o bezpieczeństwo SQL Server. Powinieneś regularnie przeprowadzać inspekcje SQL Server pod kątem nieudanych logowań. Możesz użyć domyślnego mechanizmu audytu logowania do przeglądania kont. Załóżmy na przykład, że dowolny użytkownik próbuje połączyć się z programem SQL Server przy użyciu konta o wysokim poziomie uprawnień. W takim przypadku można zobaczyć błąd logowania i adres IP przychodzącego żądania (klienta). Pomoże to uchwycić i wyeliminować podejrzaną aktywność.
Możesz użyć rozszerzonych zdarzeń, śledzenia SQL, przechwytywania zmian danych, wyzwalaczy (DDL, DML lub Logowanie), specyfikacji audytu bazy danych lub serwera do audytu SQL Server.
12. Pamiętaj o uprawnieniach na poziomie serwera i bazy danych
Specjaliści ds. baz danych powinni zachować ostrożność podczas przypisywania uprawnień na poziomie serwera lub na poziomie bazy danych. Czasami widzimy, że programiści otrzymują sysadmin na poziomie serwera lub uprawnienia właściciela bazy danych na poziomie bazy danych. Są to najwyższe uprawnienia, jakie użytkownik może mieć odpowiednio na poziomie instancji lub bazy danych.
- Zapoznaj się ze stałymi rolami na poziomie serwera, aby zrozumieć stałe role na poziomie serwera i ich możliwości.
- Zapoznaj się z rolami na poziomie bazy danych, aby lepiej zrozumieć stałe role na poziomie bazy danych.
13. Wyłącz usługę przeglądarki SQL Server
SQL Server używa usługi przeglądarki dla nazwanego wystąpienia. Nasłuchuje wszystkich przychodzących żądań połączeń SQL Server. Wykorzystuje port UDP 1434 i odpowiada na żądania podając numer portu TCP/IP wymagany do połączenia z SQL Server. Dlatego możesz wyłączyć usługę przeglądarki i jawnie zdefiniować numer portu w ciągach aplikacji. Pozwala to uniknąć narażenia numeru portu na przychodzące żądania połączenia i pomaga w bezpieczeństwie SQL Server.
Możesz zapoznać się z artykułem Jak działa przeglądarka SQL Server, aby lepiej zrozumieć usługę przeglądarki SQL Server.
Dalsze zagadnienia dotyczące bezpieczeństwa SQL Server
Jak już wspomniano, zabezpieczenia SQL Server to ciągły proces, na który składają się różne czynniki i kroki. Należy regularnie odwiedzać instancje SQL Server, zasady bezpieczeństwa i regularnie je aktualizować zarówno na poziomie systemu operacyjnego, jak i SQL Server. Stosując regularnie te najlepsze praktyki, pomożesz stworzyć bezpieczniejszą i niezakłócającą pracy usługę bazy danych dla swojej firmy.