Jak chronić program SQL Server przed hakerami

9

Mam problem i nie mogłem wymyślić, jak sobie z tym poradzić. Mam SQL Server na serwerze Windows 2008 R2. Ten SQL Server 2005 jest używany do otrzymywania subskrypcji DB z innego SQL Server zlokalizowanego gdzie indziej w Internecie. Mam port serwera SQL otwarty przez zaporę, jednak w zakresie podałem adres IP innego programu SQL Server. Czyniąc to, miałem nadzieję, że żądania połączenia przez ten port nie dotrą do SQL Servera, chyba że żądania pochodzą z innego serwera SQL Server (którego adres IP jest wymieniony w zakresie w regule zapory). Ale kiedy widzę dziennik, istnieją setki wpisów „logowanie użytkownika nie powiodło się” (i przychodzą one z każdą sekundą). Wygląda na to, że haker próbuje brutalnie odgadnąć hasło użytkownika. Ale pytanie brzmi: dlaczego system Windows pozwala tym żądaniom dotrzeć do programu SQL Server, mimo że nie pochodzą one z adresu IP wymienionego w zakresie zapory? Jaki jest właściwy sposób ochrony tego programu SQL Server. Żaden inny adres IP niż adres IP innego programu SQL Server nie musi łączyć się z tym serwerem SQL.

EDYCJA - dalsze informacje:

Uruchomiłem telnet na porcie serwera SQL z różnych komputerów. Telnet kończy się niepowodzeniem, z wyjątkiem sytuacji, gdy jest uruchamiany z komputera wymienionego w zakresie zapory. Wygląda więc na to, że zapora sieciowa dobrze blokuje port serwera SQL. Ale dlaczego widzę te nieudane żądania logowania do użytkownika „sa” z różnych adresów IP w dzienniku SQL Server? Czy to możliwe, że haker wchodzi do komputera przez port 80, a następnie próbuje w jakiś sposób połączyć się z serwerem SQL? Port 80 i 443 są otwarte dla wszystkich. Wszystkie pozostałe porty są zamknięte, z wyjątkiem portu serwera SQL (i który jest otwarty tylko dla jednego określonego adresu IP). Na serwerze 80 na porcie 80 nie działa nic, co mogłoby prowadzić użytkownika do serwera SQL. W rzeczywistości istnieje tylko jeden plik index.html (czysty HTML bez połączenia z SQL) na serwerze WWW. To tylko serwer testowy konfigurowany do przyszłego użytku. Testuj tylko dane w SQL Server.

EDYTOWAĆ:

Włączyłem śledzenie zapory ogniowej, aby uwzględnić zarówno połączenia upuszczania, jak i połączenia powodzenia. Teraz śledzi wszystko. Następnie przechodzę do dziennika programu SQL Server, gdzie widzę te nieudane próby logowania z różnych adresów IP w Chinach. Ale w dzienniku zapory nie ma wpisów dla tych adresów IP. Jak to jest możliwe? Czy mogą dostać się na serwer SQL całkowicie omijając zaporę? Jeśli przypuśćmy, że jakiś port zapory był otwarty, przez który mogliby wejść, dziennik zapory powinien pokazywać wpis dla tego adresu IP. Mam całkowitą stratę.

Allen King
źródło
Co powiesz na używanie Logon Trigger ? Ponadto SQL Server nie powinien być narażony na działanie Internetu (dostęp publiczny). Możesz także użyć reguł programu w Zaporze systemu Windows, aby ograniczyć zakres adresów IP.
Kin Shah,
Tak, mógłbym, ale w głębi duszy tak naprawdę nie chodzi o SQL Server. Próbuję dowiedzieć się, dlaczego zapora systemu Windows nie robi tego, co powinna, to znaczy nie przepuszcza tych żądań, ponieważ nie pochodzą one z jedynego dozwolonego adresu IP.
1
Tak, wygląda na to, że Zapora systemu Windows jest źle skonfigurowana. Być może masz inną bardziej ogólną zasadę zezwalającą na port 1433 (lub zezwalającą na wszystko), a może Zapora systemu Windows jest wyłączona w sieciowej karcie sieciowej. Trudno powiedzieć, nie widząc konfiguracji. Ale tak naprawdę, jak mówi Max, jest to bardziej pytanie dotyczące ServerFault. Miałeś na myśli Windows 2008 R2, btw? „RC” to Release Candidate, przedpremierowe oprogramowanie do testowania.
James L
1
Czy na pewno korzystasz ze starego kandydującego systemu operacyjnego ?! Napraw to pierwszy.
Michael Hampton

Odpowiedzi:

12

Wygląda na to, że zapora nie jest poprawnie skonfigurowana. To pierwszy krok.

Normalnie nie alfonsowałbym książki, którą napisałem, ale w tym przypadku zrobię wyjątek. Nazywa się Zabezpieczanie programu SQL Server i zapewni dobry początek.

mrdenny
źródło
Cóż, twoja książka idealnie pasuje do tego pytania :-)
mfinni
Fajne! Czy zawiera zalecenia dotyczące używania certyfikatów zamiast uwierzytelniania lokalnego / Windows dla serwerów internetowych? ;-)
Greg Askew
Zobacz moje zmiany. Zapora wydaje się działać poprawnie. Jest to inna sztuczka, którą grają chińscy hakerzy, aby dostać się do SQL Server.
Allen King,
1
Jeśli ktoś łączy się z portem SQL z publicznego adresu IP, zapora nie jest poprawnie skonfigurowana. Jeśli pochodzą z wewnętrznego adresu IP, masz inny problem. Samo SQL nie obsługuje certyfikatów. Musisz to zrobić za pomocą AD i mapowań certyfikatów.
mrdenny
Powrót do rysunku rzeczywiście dla zapory ogniowej. Wyciągnęłbym serwer SQL z Internetu, dopóki nie zostanie rozwiązana sytuacja zapory. W ten sposób będziesz mógł stosunkowo łatwo zablokować cały zakres adresów IP.
Techie Joe
4

Po prostu powiedziałem - nie. Nie używałbym firewall itp. - serwer SQL nie ma prawa być w Internecie. BARDZO BARDZO kilka wyjątków.

Do replikacji skonfiguruj prawidłową sieć VPN.

TomTom
źródło
Jestem trochę zmieszany. Jeśli serwer DB nie znajduje się w Internecie, w jaki sposób serwer zaplecza aplikacji sieci Web dotrze do serwera DB?
Allen King
Poprzez sieć wewnętrzną. Podstawowe ustawienia. Aplikacja internetowa znajduje się w obu sieciach.
TomTom
3

Oprócz prawidłowej konfiguracji zapory, oto kilka ogólnych zaleceń, aby zabezpieczyć SQL Server przed atakami siłowymi:

  • Wyłącz konto „sa”. Znajomość dokładnej nazwy użytkownika ułatwi ataki

    ALTER LOGIN sa DISABLE
    

Inną opcją jest zmiana nazwy konta „sa” na mniej oczywistą nazwę

ALTER LOGIN sa WITH NAME = SimonXZY
  • Użyj uwierzytelniania systemu Windows zamiast uwierzytelniania w trybie mieszanym. Uwierzytelnianie systemu Windows wymusza zasady haseł systemu Windows i blokuje logowanie w przypadku kolejnych nieudanych prób logowania
  • Kontrola nie powiodła się. Najłatwiej to zrobić, ustawiając opcję kontroli logowania we właściwościach serwera, zakładkę Bezpieczeństwo na Tylko nieudane logowania lub Zarówno nieudane, jak i udane logowanie. To nie pomoże ci ochronić się przed atakami brutalnej siły, ale pomoże ci być świadomym tych ataków

Bardziej użyteczne rekomendacje tutaj: Zapobieganie brutalnej sile lub atakowi słownikowemu: Jak uchronić brutali przed łupem

Milena Petrovic
źródło