Estou tentando descobrir quem alterou a senha para um logon no SQL Server 2008 R2.
Eu já verifiquei o rastreamento padrão - e ele não registra esse evento. O rastreamento padrão incluirá estes eventos relacionados à segurança:
/*
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
*/
Além disso, analisou o backup do log de transações para descobrir isso, mas sem sorte.
Existe alguma outra maneira de descobrir isso?
Além disso, estou ciente de que um rastreamento do lado do servidor ajudará, mas, infelizmente, no rastreamento do lado do servidor, não incluímos o Audit Login Change Password Event
.
O melhor artigo que encontrei é de Aaron Bertrand: Rastreando alterações de senha de logon no SQL Server
sql-server-2008-r2
security
permissions
logins
Kin Shah
fonte
fonte
Respostas:
Meu artigo ajudará se você o configurar com antecedência, mas não quando o evento aconteceu no passado e você não tiver nenhum tipo de mecanismo de auditoria configurado.
Ainda há esperança, no entanto. Digamos que eu fiz isso:
Essas informações estão no rastreamento padrão em EventClass 104 (Audit Addlogin Event). No entanto, se eu alterar a senha usando um destes métodos:
Esses eventos não são capturados pelo rastreamento padrão, por razões óbvias de segurança - não deve ser possível para qualquer pessoa com acesso ao rastreamento padrão descobrir qual é a senha de outra pessoa, nem deseja facilitar a descoberta de que uma senha foi alterada (pesquisar a frequência desses eventos, por exemplo, pode revelar certas propriedades da sua estratégia de segurança).
Então o que mais você faz? Enquanto isso depende das informações ainda estarem no log e também do uso de um comando DBCC não documentado em um banco de dados do sistema (você pode fazer backup do mestre e restaurá-lo em outro lugar), é possível obter algumas informações do log de transações, por exemplo:
Isso produzirá, para os dois comandos acima, linhas com as seguintes informações (parciais):
Não parece muito, mas agora pegue essa parte 0x da descrição e faça:
Arma de fumar! Essa é a pessoa responsável por esse evento.
Obviamente, se eles usarem
ALTER LOGIN
sintaxe para todas as operações (que deveriam usar em vez desp_password
), não será possível distinguir entre alguém alterando o banco de dados padrão e alguém alterando a senha. Você também não pode dizer (pelo menos que eu posso ver) qual login afetou, apenas que essa pessoa alterou um login. Jon parece achar que essa informação também está no log, mas não consegui encontrá-la (ao contrário da informação de tempo, que de alguma forma eu passei direto).Pode haver respostas diferentes para usuários contidos no SQL Server 2012 - embora eu suspeite que as alterações de senha ainda sejam ofuscadas de maneiras semelhantes. Deixará isso para uma pergunta separada.
fonte
fn_dblog
/fn_dump_dblog
contramaster
(ou uma cópia) para descobrir qual principal foi alterada, mesmo se você precisar digitar usandoDBCC PAGE
.LOP_XACT_BEGIN
oTransaction ID
que encontrou. Ele conterá a hora exata e o SID do logon que o iniciou.DBCC LOG(master,3);
(oufn_dblog()
equivalente) e veja se você consegue identificar algo que possa ajudar a identificar o alvo. Quando euBEGIN TRANSACTION; ALTER LOGIN...
recebo informações ainda menos úteis, que desaparecem se eu reverter e se tornarão as acima se eu confirmar.isso é mais longo que um comentário, postando como resposta
fonte
Você pode utilizar o gatilho DDL no nível do servidor (observe que, neste exemplo, você deve ter o recurso Correio do Banco de Dados do SQL Server ativado e definido):
fonte