有没有办法找出谁更改了登录密码?

Kin*_*hah 11 security permissions sql-server-2008-r2 logins

我试图找出谁更改了 SQL Server 2008 R2 中的登录密码。

我已经检查了默认跟踪 - 它没有记录该事件。默认跟踪将包括这些与安全相关的事件:

/*
    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 
*/
Run Code Online (Sandbox Code Playgroud)

此外,查看事务日志备份以找出答案,但没有运气。

有没有其他方法可以找出来?

另外,我知道服务器端跟踪会有所帮助,但不幸的是,在我们的服务器端跟踪中,我们没有包括Audit Login Change Password Event.

我发现的最佳文章来自 Aaron Bertrand:Tracking Login Password Changes in SQL Server

Aar*_*and 11

如果您提前设置,我的文章会有所帮助,但如果事件发生在过去并且您没有设置任何类型的审计机制,则不会有帮助。

不过还是有希望的。假设我这样做了:

CREATE LOGIN flooberella WITH PASSWORD = N'x', CHECK_POLICY = OFF;
Run Code Online (Sandbox Code Playgroud)

此信息位于 EventClass 104(审核 Addlogin 事件)下的默认跟踪中。但是,如果我使用以下任一方法更改密码:

ALTER LOGIN flooberella WITH PASSWORD = N'y';

EXEC sp_password N'y', N'z', N'flooberella';
Run Code Online (Sandbox Code Playgroud)

出于明显的安全原因,这些事件不会被默认跟踪捕获 - 任何有权访问默认跟踪的人都不应该知道其他人的密码是什么,他们也不想让它很容易找到密码已更改(例如,轮询这些事件的频率可以揭示您的安全策略的某些属性)。

那你还能做什么?虽然这依赖于仍在日志中的信息,并且还依赖于对系统数据库使用未记录的 DBCC 命令(您可能希望备份 master 并在其他地方恢复它),但您可以从事务日志中获取一些信息,例如:

DBCC LOG(master, 1);
Run Code Online (Sandbox Code Playgroud)

对于上述两个命令,这将产生具有以下(部分)信息的行:

CREATE LOGIN flooberella WITH PASSWORD = N'x', CHECK_POLICY = OFF;
Run Code Online (Sandbox Code Playgroud)

看起来并不多,但现在取描述的 0x 部分,然后执行以下操作:

SELECT name FROM sys.server_principals
  WHERE sid = 0x01050000000000051500000093a3bcd7a9f8fb1417ab13bce8030000;
Run Code Online (Sandbox Code Playgroud)

烟枪!这是该事件的负责人。

当然,如果他们ALTER LOGIN对所有操作都使用语法(他们应该使用语法而不是sp_password),则您无法区分更改默认数据库的人和更改密码的人。您也无法分辨(至少我可以看到)哪个登录名受到影响,只能知道此人更改登录名。Jon 似乎认为这些信息也在日志中,但我没有找到它(不像时间信息,我不知何故滚动过去)。


SQL Server 2012 中包含的用户可能有不同的答案 - 尽管我怀疑密码更改仍然以类似的方式混淆。将把它留给一个单独的问题。