Saya mencoba mencari tahu siapa yang mengubah kata sandi untuk login di SQL Server 2008 R2.
Saya sudah memeriksa jejak default - dan tidak mencatat peristiwa itu. Jejak default akan mencakup peristiwa terkait keamanan ini:
/*
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
*/
Juga, melihat cadangan log transaksi untuk mengetahui hal itu, tetapi tidak berhasil.
Apakah ada cara lain untuk mengetahuinya?
Saya juga menyadari bahwa jejak sisi server akan membantu, tapi sayangnya di sisi server kami, kami tidak menyertakan Audit Login Change Password Event
.
Artikel terbaik yang saya temukan adalah dari Aaron Bertrand: Melacak Login Kata Sandi Perubahan di SQL Server
sql-server-2008-r2
security
permissions
logins
Kin Shah
sumber
sumber
Jawaban:
Artikel saya akan membantu jika Anda mengaturnya terlebih dahulu, tetapi tidak ketika peristiwa itu terjadi di masa lalu dan Anda tidak memiliki mekanisme audit apa pun.
Namun, masih ada harapan. Katakanlah saya melakukan ini:
Informasi ini dalam penelusuran default di bawah EventClass 104 (Audit Addlogin Event). Namun, jika saya mengubah kata sandi menggunakan salah satu metode ini:
Peristiwa ini tidak ditangkap oleh jejak default, karena alasan keamanan yang jelas - seharusnya tidak mungkin bagi siapa pun yang memiliki akses ke jejak default untuk mengetahui apa kata sandi orang lain, atau apakah mereka ingin membuatnya mudah bahkan untuk mengetahui bahwa kata sandi telah diubah (polling frekuensi peristiwa ini, misalnya, dapat mengungkapkan properti tertentu dari strategi keamanan Anda).
Jadi apa lagi yang bisa kamu lakukan? Meskipun ini bergantung pada informasi yang masih dalam log, dan itu juga bergantung pada menggunakan perintah DBCC tidak berdokumen terhadap database sistem (Anda mungkin ingin membuat cadangan master dan mengembalikannya di tempat lain), Anda bisa mendapatkan beberapa informasi dari log transaksi, misalnya:
Ini akan menghasilkan, untuk dua perintah di atas, baris dengan informasi (parsial) berikut:
Kelihatannya tidak banyak, tapi sekarang ambil bagian deskripsi sebanyak 0x, lalu lakukan:
Pistol merokok! Ini adalah orang yang bertanggung jawab atas peristiwa itu.
Tentu saja, jika mereka menggunakan
ALTER LOGIN
sintaks untuk semua operasi (yang seharusnya mereka gunakan alih-alihsp_password
), Anda tidak dapat membedakan antara seseorang yang mengubah database default dan seseorang yang mengubah kata sandi. Anda juga tidak bisa mengatakan (setidaknya yang saya bisa melihat) yang masuk ini terpengaruh, hanya bahwa orang ini berubah menjadi login. Jon tampaknya berpikir bahwa informasi ini ada di log juga, tetapi saya gagal menemukannya (tidak seperti informasi waktu, yang entah bagaimana saya gulir ke masa lalu).Mungkin ada jawaban berbeda untuk pengguna yang terkandung dalam SQL Server 2012 - meskipun saya menduga perubahan kata sandi masih dikaburkan dengan cara yang sama. Akan meninggalkan itu untuk pertanyaan terpisah.
sumber
fn_dblog
/fn_dump_dblog
menentangmaster
(atau salinannya) untuk mengetahui prinsip mana yang diubah, bahkan jika Anda harus menggunakan spelunkDBCC PAGE
.LOP_XACT_BEGIN
yangTransaction ID
Anda temukan. Ini akan berisi waktu yang tepat dan SID dari login yang memulainya.DBCC LOG(master,3);
(atau yangfn_dblog()
setara) dan lihat apakah Anda dapat menemukan sesuatu yang akan membantu mengidentifikasi target. Ketika saya melakukannyaBEGIN TRANSACTION; ALTER LOGIN...
saya mendapatkan informasi yang kurang berguna, yang hilang jika saya memutar kembali, dan menjadi di atas jika saya melakukan.ini lebih panjang dari komentar, posting sebagai jawaban
sumber
Anda dapat menggunakan pemicu DDL pada tingkat server (perhatikan bahwa untuk contoh ini Anda harus mengaktifkan dan menyetel fitur SQL Server Database Mail):
sumber