Ich versuche herauszufinden, wer das Kennwort für eine Anmeldung in SQL Server 2008 R2 geändert hat.
Ich habe bereits die Standardablaufverfolgung überprüft - und dieses Ereignis wird nicht protokolliert. Die Standardablaufverfolgung enthält die folgenden sicherheitsrelevanten Ereignisse:
/*
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
*/
Außerdem haben wir uns die Transaktionsprotokollsicherung angesehen, um das herauszufinden, aber kein Glück.
Gibt es eine andere Möglichkeit, es herauszufinden?
Ich bin mir auch bewusst, dass eine serverseitige Ablaufverfolgung hilfreich sein wird, aber leider haben wir in unserer serverseitigen Ablaufverfolgung die nicht aufgenommen Audit Login Change Password Event
.
Der beste Artikel, den ich gefunden habe, stammt von Aaron Bertrand: Nachverfolgen von Änderungen des Anmeldekennworts in SQL Server
quelle
Antworten:
Mein Artikel hilft, wenn Sie ihn im Voraus einrichten, aber nicht, wenn das Ereignis in der Vergangenheit stattgefunden hat und Sie keinen Überwachungsmechanismus eingerichtet haben.
Es gibt jedoch noch Hoffnung. Nehmen wir an, ich habe das getan:
Diese Informationen befinden sich in der Standardablaufverfolgung unter EventClass 104 (Audit Addlogin Event). Wenn ich das Kennwort jedoch mit einer der folgenden Methoden ändere:
Diese Ereignisse werden aus offensichtlichen Sicherheitsgründen nicht von der Standardablaufverfolgung erfasst. Es sollte niemandem mit Zugriff auf die Standardablaufverfolgung möglich sein, das Kennwort einer anderen Person herauszufinden, und sie möchten es auch nicht einfach machen, dies herauszufinden Ein Kennwort wurde geändert (das Abrufen der Häufigkeit dieser Ereignisse kann beispielsweise bestimmte Eigenschaften Ihrer Sicherheitsstrategie aufdecken).
Was können Sie sonst noch tun? Dies hängt zwar von den Informationen ab, die sich noch im Protokoll befinden, und auch von der Verwendung eines undokumentierten DBCC-Befehls für eine Systemdatenbank (möglicherweise möchten Sie den Master sichern und an anderer Stelle wiederherstellen). Sie können jedoch einige Informationen aus dem Transaktionsprotokoll abrufen. z.B:
Dies ergibt für die obigen zwei Befehle Zeilen mit den folgenden (Teil-) Informationen:
Scheint nicht viel zu sein, aber nehmen Sie jetzt diesen 0x-Teil der Beschreibung und tun Sie dann:
Rauchpistole! Dies ist die Person, die für dieses Ereignis verantwortlich ist.
Wenn sie die
ALTER LOGIN
Syntax für alle Vorgänge verwenden (die sie anstelle von verwenden solltensp_password
), können Sie natürlich nicht zwischen jemandem unterscheiden, der die Standarddatenbank ändert, und jemandem, der das Kennwort ändert. Sie können auch nicht sagen (zumindest, dass ich sehen kann), welche Anmeldung davon betroffen ist, nur dass diese Person eine Anmeldung geändert hat . Jon scheint zu glauben, dass diese Informationen auch im Protokoll enthalten sind, aber ich habe sie nicht gefunden (im Gegensatz zu den Zeitinformationen, an denen ich irgendwie vorbei gescrollt habe).In SQL Server 2012 gibt es möglicherweise unterschiedliche Antworten für enthaltene Benutzer. Ich vermute jedoch, dass Kennwortänderungen auf ähnliche Weise immer noch verschleiert werden. Lassen Sie das für eine separate Frage.
quelle
fn_dblog
/fn_dump_dblog
gegenmaster
(oder eine Kopie davon) verwenden, um herauszufinden, welches Prinzip geändert wurde, selbst wenn Sie mit Höhlenforschung arbeiten müssenDBCC PAGE
.LOP_XACT_BEGIN
nach dem, wasTransaction ID
Sie gefunden haben. Es enthält die genaue Zeit und die SID des Logins, mit dem es gestartet wurde.DBCC LOG(master,3);
(oder dasfn_dblog()
Äquivalent) und sehen Sie, ob Sie etwas erkennen können, das bei der Identifizierung des Ziels helfen würde. Wenn ich das tue,BEGIN TRANSACTION; ALTER LOGIN...
erhalte ich noch weniger nützliche Informationen, die verschwinden, wenn ich zurücksetze, und die oben genannten werden, wenn ich mich verpflichte.Dies ist länger als ein Kommentar, der als Antwort veröffentlicht wird
quelle
Sie können den DDL-Trigger auf Serverebene verwenden (beachten Sie, dass für dieses Beispiel die SQL Server-Datenbankmail-Funktion aktiviert und festgelegt sein muss):
quelle