Bezpieczeństwo SQL Server 2008 Gerard Frankowski, Zespół Bezpieczeństwa PCSS Spotkanie społeczności PLSSUG i PG.NET 19.11.2009
Agenda Poznajmy się: czym jest PCSS imic? Wprowadzenie bezpieczeństwo wieloaspektowe Bezpieczeństwo SQL Server Znane błędy, wersje, aktualizacje (krótko) Najważniejsze cechy, inne narzędzia (krótko) Tryb uwierzytelniania Demonstracja wyciek haseł do pamięci Zasada minimalnych przywilejów Tropimy słabe hasła Podsumowanie, pytania, dyskusja 2
Kim jesteśmy i co robimy? 3
PCSS Poznańskie Centrum Superkomputerowo- Sieciowe (1993) Operator sieci PIONIER oraz POZMAN Uczestnik projektów naukowo-badawczych Główne obszary zainteresowań: Gridy, sieci nowej generacji, portale Bezpieczeństwo sieci i systemów http://www.pcss.pl
Zespół Bezpieczeństwa PCSS Zespół BezpieczeństwaPCSS istnieje od 1996r. Zabezpieczanie infrastruktury PCSS Bezpieczeństwo w projektachr&d Szkolenia, transfer wiedzy Badania własne Usługizewnętrzne Ciekawsze badania z ostatnichlat Sieci bezprzewodowe w Poznaniu Raportnt. bezpieczeństwa bankowości elektronicznej Bezpieczeństwo serwerów WWW (Apache, MS IIS) Bezpieczeństwo sklepów internetowych http://security.psnc.pl 5
Centrum Innowacji Microsoft Centrum bezpieczeństwa i usług outsourcingowych http://mic.psnc.pl Działa od 1.06.2006r. Partnerzy projektu Microsoft Polska PCSS Politechnika Poznańska
Wybrane zadania MIC w 2009 Nowe obszary badań (od I 2009) Interoperacyjność systemów i technologii Wirtualizacja systemów Wysokowydajne przetwarzanie komputerowe (HPC) m.in. udział w programie HPC TAP Program szkoleniowy Interoperacyjność systemów i technologii Szkolenia w zakresie bezpieczeństwa IT Windows 2008 Server R2 Doroczna Konferencja MIC 16 kwietnia 2009, 3. edycja 7
Bezpieczeństwow w MIC Ochrona infrastruktury MIC Audyty bezpieczeństwa, konsultacje Program szkoleń bezpieczeństwa Więcej informacji w programie szkoleń http://mic.psnc.pl/szkolenia Badania poziomu bezpieczeństwa technologii Microsoft (2007-08) Audyty bezpieczeństwa dla administracji i MŚP (2007) Konferencje, MS Speakers Biuro 8
Plany na przyszłość Rozwijanie prac nad wirtualizacją, interoperacyjnością technologii i HPC Szkolenia w 2010 r.: Windows Server 2008R2 Bezpieczeństwo ASP.NET MVC Bezpieczeństwo kontrolera domeny Exchange Labs Windows HPC Server Zachęcamy do zgłaszania własnych tematów! Współpraca z Microsoft Research 4. Konferencja MIC: 4.03.2010, Poznań 9
Bezpieczeństwo SQL Server 2008 10
Cel prezentacji Przegląd kwestii związanych z bezpieczeństwem oprogramowania MS SQL Server 2008 Niekoniecznie zestaw gotowych recept, raczej lista tematów do rozważenia Grupa docelowa: użytkownicy MS SQL Server Także specjaliści ds. bezpieczeństwa pragnący zainteresować się serwerem
Wprowadzenie Bezpieczeństwo serwera jest tematem wieloaspektowym Paul S. Randal w CommonSQL Server Security Issuesand Solutions wymienia: bezpieczeństwo fizyczne, sieci, ograniczenie powierzchni ataku, konta usługowe, ograniczenie wykorzystania uprawnień administracyjnych, uwierzytelnianie, autoryzację, podatności SQL Injection, odtwarzanie systemu oraz logowanie informacji An article that describes all thesecurity problems you shouldbe looking at wouldbe a whole magazine in itself Więcej: http://technet.microsoft.com/en- us/magazine/2009.05.sql.aspx
Które aspekty poruszymy? Przegląd najnowszych funkcji SQL Server 2008 związanych z bezpieczeństwem Krótki (wskazanie cech) Przegląd narzędzi konfiguracyjnych Tryb uwierzytelniania Wady i zalety SQL (Mixed) Authentication Błąd ujawniania haseł w pamięci: demonstracja Zasada minimalnych przywilejów Przykład możliwość enumeracji kont użytkowników Silne hasła Różne metody zapewnienia odpowiedniej siły haseł 13
Przegląd błędów ;)
Wersje oprogramowania MS SQL Server 2008 I wydanie sierpień 2008 (10.00.1600) MS SQL Server 2008 SP1 Wydany w kwietniu 2009 (10.00.2531) Zawiera przede wszystkim poprawki błędów, mało nowej funkcjonalności, anonsuje się też poprawę bezpieczeństwa Cumulative Update 4 wrzesień 2009 (10.00.2734) MS SQL Server 2008 R2 Hurtownie i centra danych CTP listopad 2009 (już dostępny do testów!) Wersja finalna wiosna 2010 15
Czy zawsze aktualizować nasz serwer? Wpływ na poziom bezpieczeństwa Czy najnowsza wersja zawiera poprawki bezpieczeństwa? Czy adresują one znane podatności (czy są exploity?) Wpływ na dostępność usługi Czy możemy przerwać działanie usługi? Czy mamy zapasowe środowisko testowe? Jak długo potrwają testy? Jakie jest prawdopodobieństwo wystąpienia błędów po aktualizacji? Zwykle należy instalować aktualne oprogramowanie, ale niekiedy pośpiech nie jest najlepszym doradcą 16
Nowefunkcje, innenarz narzędzia 17
SQL Server 2008 przegląd cech bezpieczeństwa Różnice między SQL Server 2005 a 2008 (przykłady) Brak niektórych narzędzi lub znaczące zmiany w korzystaniu z nich Inne, np. usunięcie polecenia DBCC BYTES Nowe lub ulepszone mechanizmy bezpieczeństwa Extensible Key Management Transparent Data Encryption SQL Server Audit Zarządzanie oparte na zasadach (policies) 18
Ulepszenia w zakresie szyfrowania Extensible KeyManagement Możliwość rejestracji zewnętrznych urządzeń bezpieczeństwa (HSM) w SQL serwerze Dostępne są dodatkowe, zaawansowane funkcje (np. wygasanie klucza) Dostęp z poziomu poleceń T-SQL Transparent Data Encryption Realizacja szyfrowania i deszyfrowania plików danych i logu w czasie rzeczywistym (AES, 3DES) Brak konieczności jakichkolwiek zmian na poziomie aplikacji korzystającej z danych Zabezpieczenie także kopii zapasowych! 19
Uwierzytelnianie i logowanie Większe możliwości uwierzytelniania Kerberos Rozszerzenie na wszystkie protokoły komunikacyjne Zaawansowane usługi raportowania (Reporting Services) SQL Server Audit Poprawiona wydajność logowania informacji Bardzo duża granularnośćkonfiguracji poziom serwera, bazy danych, rodzaju instrukcji (np. SELECT, INSERT) wydawanych przez poszczególnych użytkowników Zapis informacji do dziennika systemu(sql Servermusi mieć niezbędne uprawnienia), aplikacji lub do osobnego pliku Możliwość zatrzymania serwera w przypadku błędu 20
Policy-basedManagement Zasady stosowane na poziomie bazy, serwera lub grupy serwerów Możliwość definicji polityki i eksportu na wszystkie posiadane serwery Kolejność działania Tworzenie warunków odnoszących się do różnych aspektów (ang. facet) Tworzenie polityk grupujących różne warunki Ewaluacja i/lub stosowanie polityk w odniesieniu do serwera lub serwerów Narzędzie: SQL Server Management Studio Możliwość eksportu bieżącej konfiguracji jako polityki 21
Narzędzia SQL Server 2005 (1) SQL Server 2005 Surface AreaConfiguration 22
Narzędzia SQL Server 2005 (2) Microsoft BaselineSecurity Analyzer SQL Server 2005 Best Practices Analyzer 23
Jak to wygląda w SQL Server 2008? Nie ma już SCT oraz BPA Analogiczną funkcjonalność do SCT można uzyskać za pośrednictwem SQL Server Management Studio lub SQL Server Configuration Manager BPA -Microsoft uznał, że narzędzia, które jedynie wskazują problemy, ale ich nie naprawiają, nie są przydatne użytkownikom (?) Większość ustawień konfiguracyjnychmożna ustalić na zasadzie zarządzania politykami 24
Odpowiednik SCT w SQL Server 2008 25
Przykład konfiguracja xp_cmdshell Scenariusz: chcemy przygotować honeypota Otwarty na zewnątrz standardowy port, konto gościa ze słabym hasłem, uaktywnione xp_cmdshell Co nowi użytkownicy będą wpisywać jako parametr xp_cmdshell? Kolejne kroki: SMS: [Serwer] Management Policy Management Conditions (a następnie Policies) Tworzenie warunku (facet: Surface AreaConfiguration, warunek: @XPCmdShellEnabled = True) Utworzenie polityki zawierającej przygotowany warunek Ewentualna ewaluacja oraz zastosowanie polityki 26
27
Tryby uwierzytelniania i co może z tego wyniknąć 28
Tryby uwierzytelniainaw w SQL Server 2 tryby uwierzytelniania SQL (Mixed Mode) Windows (Trusted Mode) Mixed Mode Trusted Mode 29
UwierzytelnianieMixedModeMode Szersze możliwości Poprawia kompatybilność ze starszymi rozwiązaniami Umożliwia łączenie się użytkownikom o różnych tożsamościach Zwiększa interoperacyjność Więcej problemów z bezpieczeństwem Dodatkowa para użytkownik/hasło do zapamiętania Mniejsze możliwości wymuszenia polityki kontroli dostępu Konieczność każdorazowego uwierzytelniania się Serwer musi gdzieś sprawdzać/przechowywać hasła Obejrzymy dziś błąd charakterystyczny tylko dla Mixed Mode;)
Którą metodę wybrać? O ile to możliwe, należy korzystać z uwierzytelniania zintegrowanego z systemem W przeciwnym przypadku należy zwrócić szczególną uwagę na konfigurację bazy danych zgodnie z zasadą minimalnych przywilejów oraz tropić słabe hasła kont SQL-owych Wybór trybu uwierzytelniania Podczas instalacji Podczas użytkowania serwera Weryfikacja trybu SQL Server Management Studio EXEC xp_loginconfig login mode
Uwierzytelnianie w SQL SMS
SQL Server CleartextPassword PasswordExposure Data ogłoszenia: 2 września 2009 (Sentrigo) Podatne wersje SQL Server 2000, 2005, 2008 Dotyczy SQL (Mixed) Authentication Mode Hasła użytkowników łączących się z serwerem są przechowywane w pamięci w formie niezaszyfrowanej Odczyt wymaga uprawnień lokalnego administratora W związku z powyższym producent nie uznał odkrycia za lukę bezpieczeństwa oraz odmówił przygotowania poprawki 33
Odpowiedź producenta Za: http:// ://blogs.technet.com/srd/archive/2009/09/02/sql- server-information-disclosure-non-vulnerability.aspx 34
Demonstracja-scenariuszscenariusz Dołączenie się do procesu SQL Server przy pomocy debuggera Przeglądanie zaalokowanej pamięci Po wydaniu polecenia CREATE LOGIN Po podłączeniu się użytkownika do serwera (za pomocą różnych interfejsów) Użycie narzędzia Passwordizer 35
Demo 36
Możliwe zagrożenia Administrator systemu i tak ma praktycznie pełną władzę nad kontami użytkowników SQL Servera Nie chodzi więc o to, że np. zobaczy ich dane Złośliwy administrator może jednak: Odczytać hasła (nie skróty!) użytkowników i próbować wykorzystać je w innych serwisach Podszyć się niepostrzeżenie pod użytkownika i wykonać niepożądane działania w jego imieniu Hasła w otwartej postaci nigdy nie powinny być ujawniane w pamięci (pliku) Gdyby tak było, obronilibyśmy się na tym polu także przed złośliwym administratorem 37
Jesteśmy złośliwym administratorem Ślad definicji hasła użytkownika Wydano zapytanie: CREATE LOGIN supertajny WITH PASSWORD = 'Teg0NIKT_nie_zgadn1E:)' Jest to sam w sobie przypadek ujawniania wrażliwych danych w pamięci! 38
Większe zagrożenie Użytkownik supertajnyłączy się później z serwerem Może mieć już zmienione hasło, nieznane administratorowi 39
PasswordExposure ochrona ochrona (?) Unikanie SQL Authentication Mode Zastosowanie narzędzia Sentrigo Passwordizer Do bezpłatnego pobrania ze strony producenta Wymaga wypełnienia krótkiego formularza rejestracyjnego Czyści pamięć alokowaną przez SQL Server (nie rozwiązuje problemu, tylko usuwa jego skutki) Jest możliwe, że spowoduje efekty uboczne! Musi być uruchamiane regularnie (mogą nadejść nowe połączenia ) Naprawdę złośliwy administrator systemu nie ma żadnego powodu, aby je zastosować 40
PasswordExposurew SQL Server 2005 Niebezpieczeństwo jest większe niż w najnowszej wersji SQL Server Do SQL Server 2005 włącznie nie był potrzebny administracyjny dostęp do systemu, wystarczyła możliwość zadawania zapytań Uzyskanie listy zaalokowanych obszarów pamięci SELECT* FROM sys.dm_os_virtual_address_dump Przeglądanie poszczególnych obszarów pamięci: DBCC TRACEON(3604) DBCC BYTES(adres, liczba bajtów) DBCC BYTES nie działa już w SQL Server 2008 41
Zasada minimalnych przywilejów 42
Konfiguracja domyślna Należy stwierdzić, że od SQL Server 2005 domyślna instalacja serwera jest dość dobrze zabezpieczona Przede wszystkim wyłączone są niebezpieczne opcje, takie jak uaktywnienie xp_cmdshell, Database Mail itd. Domyślnie zablokowane konto sa Przydatne (ale i groźne) ustawienia administrator musi świadomie uaktywnić Nadal jednak można przeprowadzić działania dodatkowo uodparniające system na ataki 43
Konta usług SQL Server działa w systemie Windows jako zbiór usług skojarzonych z kontami Należy absolutnie unikać uruchamiania na koncie Lokalnym (Systemu lub Administratora) Zwykle używa się wbudowanego konta Usługa Sieciowa Idealną sytuacją jest przygotowanie konta o odpowiednio zdefiniowanych uprawnieniach dla każdej usługi składowej Wyboru najlepiej dokonać podczas instalacji Mając już wcześniej przygotowany spis usług i odpowiednie konta! Narzędzie konfiguracyjne: SQL Server Configuration Manager, ewentualnie services.msc 44
Zasada minimalnych przywilejów a procedury składowane Domyślnie niektóre procedury składowane mające wpływ na bezpieczeństwo systemu cechują się szerokimi uprawnieniami dostępu Przed pochopnym odbieraniem uprawnień należy szczegółowo przeanalizować, czy procedury nie są niezbędne dla działania uruchomionych usług Szczególnie uważnie trzeba przeanalizować procedury składowane, które mogą wywoływać wszyscy użytkownicy (rola public) 45
Jak sprawdzić i ograniczyć listę groźnych procedur? Procedury rozszerzone SELECT object_name(major_id) ASsecurable FROM sys.database_permissionswhere grantee_principal_id= user_id('public') AND objectproperty(major_id major_id, 'IsExtendedProc')=1 ORDER BY securable Procedury zwykłe ANDobjectproperty(major_id major_id, 'IsProcedure')=1 Zabronienie wykonywania procedury REVOKE EXECUTE ON xp_revokelogin TO public 46
Procedury składowane -ciekawostka Możliwość enumeracji kont Windows z poziomu konta gościa przy pomocy procedury składowanej xp_revokelogin Uwaga: wbrew nazwie, nie jest to procedura rozszerzona ;) Testy przeprowadzono na domyślnej instalacji systemu Różne komunikaty błędów dla istniejących i nieistniejących nazw kont Podobna sytuacja występuje dla sp_revokelogin, ale już nie dla xp_grantloginczy sp_grantlogin Ciekawostka istniała także w SQL Server 2005 (i już kilka razy ją pokazywaliśmy ;) 47
Procedury składowane ciekawostka (2) 48
Procedury składowane zalecenia Maksymalne ograniczenie użytkowników publicdo procedur składowanych mogących mieć wpływ na bezpieczeństwo Przykłady takich procedur domyślnie dostępnych: xp_dirtree, xp_fileexist, xp_getnetname, xp_instance_regread, xp_regread Uwaga na funkcjonalność! W konkretnym przypadku xp_revokeloginproducent producent rekomenduje używanie DROP LOGIN, a same procedury mają zostać w przyszłości usunięte 49
Jak jeszcze uodpornić konfigurację? Zmiana nazwy konta sa(nawet jeśli go na codzieńnie używamy) Najlepiej zarządzać bazą danych z poziomu innego konta Zablokowanie dostępu konta guestdo baz systemowych Rozważenie usunięcia wbudowanej domyślnie grupy BUILTIN\Administrators Wymaga analizy mogą przestać działać np. usługi klastrowane Uaktywnienie weryfikacji polityki wygasania hasła (więcej szczegółów za chwilę) 50
Hasła użytkowników 51
Tropimy słabe hasła użytkowników I linia obrony: nieużywamy SQL Authentication II linia obrony: powiązanie z politykami systemowymi 52
CHECK_POLICY, CHECK_EXPIRATION Próba utworzenia konta użytkownika ze zbyt krótkim hasłem CREATE LOGIN test WITH PASSWORD = test, CHECK_POLICY= ON, CHECK_EXPIRATION = ON Msg 15116, Level 16, State 1, Line 1 Password validation failed. The password does not meet Windows policy requirements because it is too short. Sprawdzenie wygasania hasła (password expiration) jest domyślnie wyłączone! Działanie w systemach Server 2003 i późniejszych 53
Wykorzystanie funkcji pwdcompare Możliwość testowania słabych haseł Puste hasło SELECT name FROM sys.sql_loginswhere PWDCOMPARE ('', password_hash) = 1 Hasło takie samo, jak nazwa konta SELECT name FROM sys.sql_logins WHERE pwdcompare(name, password_hash) = 1 Modyfikacje: nazwa konta z dodanym 1, numerem miesiąca, powtórzona dwukrotnie itd. Hasło znane słowo SELECT name FROM sys.sql_loginswhere PWDCOMPARE('admin123', password_hash) = 1 54
Łamanie dowolnych haseł kont SQL-owych Jak przechowywane są hasła w SQL Server 2008? SELECT name, password_hashfrom sys.sql_logins 0x01004AF7912142C377569BD3B50E27F272D5BD04742C377569BD3B50E27F272D5BD047 06BB166BB6E to: Wartość stała (2 bajty) Sól(ang. salt, 4 bajty) Skrót SHA1 soli oraz hasła (20 bajtów) 55
Cain& Abel Narzędzie do odzyskiwania haseł z systemów Windows Wersja4.9.35 do pobrania spod http://www.oxid.it/cain.html Możliwość żliwośćwykonywania wykonywania ataków słownikowych i bruteforce 56
Cain& Abel w akcji (1) AddMSSQL HashesUppercase H UppercaseHashto zaszłość z SQL Server 2000 57
Cain& Abel w akcji (2) Co to znaczy słabe hasło Słownikowe, nazwa konta + 123, Takie, które da się złamać podczas weekendu, np. do 8 znaków [a-z, 0-9, dodatkowo kilka znaków specjalnych] 58
Zbliżamy się do końca 59
Podsumowanie SQLServer Server 2008 to ogromny kombajn i nie jest łatwo ogarnąć wszystkie aspekty bezpieczeństwa Producent czyni wiele wysiłków: Coraz lepsza (dobrze chroniona) domyślna konfiguracja Nowe, zaawansowane mechanizmy ochrony Prawdopodobnie mało błędów bezpieczeństwa w kodzie Wsparcie ze strony innych elementów infrastruktury (jak system operacyjny) Nie zawsze można je wykorzystać ze względu na chęć zapewnienia interoperacyjności Dlatego nadal niezbędny jest nadzór i uważne przystosowanie konfiguracji do swych potrzeb 60
Więcejinformacji(wybraneźródła) Bezpieczeństwo SQL Server: http://www.microsoft.com/sqlserver/2008/en/us/security. aspx- SQL Server 2008 Security (opis ogólny) http:// ://technet.microsoft.com/en-us/library/bb283235.aspx -Securing SQL Server (punkt startowy dla administratora) http:// ://www.sqlcrunch.com/security/tabid/89/default.aspx -zbiór artykułów poświęconych różnym aspektom bezpieczeństwa (SQL Server 2000, 2005, 2008) http://www.microsoft.com/sqlserver/2008/en/us/wp-sql- 2008-security.aspx-Security Overviewfor Database Administrators 61
Informacje kontaktowe Autorprezentacji gerard.frankowski@man.poznan.pl Centrum Innowacji Microsoft: http://mic.psnc.pl mic@man.poznan.pl.pl PCSS http://www.pcss.pl Zespół Bezpieczeństwa PCSS http://security.psnc.pl security@man.poznan.pl 62
Pytania i dyskusja Dziękuję za uwagę! 63