Próbuję dowiedzieć się, kto zmienił hasło do logowania w SQL Server 2008 R2.
Sprawdziłem już domyślny ślad - i nie rejestruje tego zdarzenia. Domyślny zapis obejmuje następujące zdarzenia związane z bezpieczeństwem:
/*
Audit Add DB user event
Audit Add login to server role event
Audit Add Member to DB role event
Audit Add Role event
Audit Add login event
Audit Backup/Restore event
Audit Change Database owner
Audit DBCC event
Audit Database Scope GDR event (Grant, Deny, Revoke)
Audit Login Change Property event
Audit Login Failed
Audit Login GDR event
Audit Schema Object GDR event
Audit Schema Object Take Ownership
Audit Server Starts and Stops
*/
Sprawdziłem również kopię zapasową dziennika transakcji, aby się tego dowiedzieć, ale bez powodzenia.
Czy jest jakiś inny sposób, aby się tego dowiedzieć?
Wiem również, że śledzenie po stronie serwera pomoże, ale niestety w naszym śledzeniu po stronie serwera nie uwzględniliśmy Audit Login Change Password Event
.
Najlepszy artykuł, który znalazłem, pochodzi od Aarona Bertranda: Śledzenie zmian hasła logowania w SQL Server
sql-server-2008-r2
security
permissions
logins
Kin Shah
źródło
źródło
Odpowiedzi:
Mój artykuł pomoże, jeśli skonfigurujesz go z wyprzedzeniem, ale nie wtedy, gdy wydarzenie miało miejsce w przeszłości i nie miałeś skonfigurowanego żadnego mechanizmu kontroli.
Jednak wciąż jest nadzieja. Powiedzmy, że to zrobiłem:
Informacje te znajdują się w domyślnym zapisie w EventClass 104 (Audit Addlogin Event). Jeśli jednak zmienię hasło przy użyciu jednej z następujących metod:
Zdarzenia te nie są przechwytywane przez domyślny ślad, z oczywistych względów bezpieczeństwa - nikt nie powinien mieć dostępu do domyślnego śledzenia, aby dowiedzieć się, jakie jest hasło innej osoby, ani nie chce ułatwić, aby dowiedzieć się, że hasło zostało zmienione (na przykład sondowanie częstotliwości tych zdarzeń może ujawnić pewne właściwości strategii bezpieczeństwa).
Co jeszcze możesz zrobić? Chociaż polega to na tym, że informacje nadal znajdują się w dzienniku, a także na użyciu nieudokumentowanej komendy DBCC względem systemowej bazy danych (możesz wykonać kopię zapasową wzorca i przywrócić ją w innym miejscu), możesz uzyskać pewne informacje z dziennika transakcji, na przykład:
Spowoduje to, dla powyższych dwóch poleceń, wiersze z następującymi (częściowymi) informacjami:
Nie wydaje się to dużo, ale teraz weź tę część 0x opisu, a następnie wykonaj:
Palenie pistoletu! To osoba odpowiedzialna za to wydarzenie.
Oczywiście, jeśli używają
ALTER LOGIN
składni do wszystkich operacji (których powinni używać zamiastsp_password
), nie można odróżnić osoby zmieniającej domyślną bazę danych od osoby zmieniającej hasło. Nie można też powiedzieć (przynajmniej to widzę), które zalogować to wpływ, tylko że ta osoba zmieniła się zalogować. Jon wydaje się myśleć, że ta informacja również znajduje się w dzienniku, ale nie udało mi się jej znaleźć (w przeciwieństwie do informacji o czasie, które jakoś przewinęłam w przeszłość).W SQL Server 2012 mogą być różne odpowiedzi dla zamkniętych użytkowników - choć podejrzewam, że zmiany haseł są nadal zaciemniane w podobny sposób. Pozostawię to na osobne pytanie.
źródło
fn_dblog
/fn_dump_dblog
przeciwkomaster
(lub jego kopii), aby dowiedzieć się, która zasada została zmieniona, nawet jeśli musisz użyć spelunkDBCC PAGE
.LOP_XACT_BEGIN
dlaTransaction ID
znalazłeś. Będzie zawierać dokładny czas i identyfikator SID loginu, który go uruchomił.DBCC LOG(master,3);
(lubfn_dblog()
odpowiednik) i sprawdź, czy możesz dostrzec coś, co pomogłoby zidentyfikować cel. Kiedy to robięBEGIN TRANSACTION; ALTER LOGIN...
, otrzymuję jeszcze mniej użyteczne informacje, które znikają, jeśli wycofam, i stają się powyższe, jeśli popełnię.to jest dłuższe niż komentarz, publikowanie jako odpowiedź
źródło
Możesz użyć wyzwalacza DDL na poziomie serwera (zwróć uwagę, że w tym przykładzie musisz mieć włączoną i ustawioną funkcję SQL Server Database Mail):
źródło