লগিনের জন্য কে পাসওয়ার্ড পরিবর্তন করেছে তা জানার কোনও উপায় আছে?


11

এসকিউএল সার্ভার ২০০৮ আর 2 এ লগ-ইন করার জন্য কে পাসওয়ার্ড পরিবর্তন করেছে তা জানার চেষ্টা করছি।

আমি ইতিমধ্যে ডিফল্ট ট্রেস পরীক্ষা করে দেখেছি - এবং এটি ইভেন্টটি লগ করে না। ডিফল্ট ট্রেসটিতে এই সুরক্ষা-সম্পর্কিত ইভেন্টগুলি অন্তর্ভুক্ত থাকবে:

/*
    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 
*/

এটি সন্ধান করার জন্য লেনদেন লগ ব্যাকআপের দিকেও নজর রেখেছিল, তবে ভাগ্য নেই।

এটি খুঁজে বের করার অন্য কোনও উপায় আছে কি?

এছাড়াও, আমি সচেতন যে একটি সার্ভার সাইড ট্রেস সাহায্য করবে, তবে দুর্ভাগ্যক্রমে আমাদের সার্ভারের সাইড ট্রেসটিতে আমরা এটিকে অন্তর্ভুক্ত করি নি Audit Login Change Password Event

আমি যে সেরা নিবন্ধটি পেয়েছি তা হ'ল অ্যারোন বারট্রান্ডের: এসকিউএল সার্ভারে লগইন পাসওয়ার্ডের পরিবর্তনগুলি ট্র্যাক করা


2
আমি হারুনের একটি পরামর্শ স্থাপন করব তারপরে কোথাও বর্তমান পাসওয়ার্ড হ্যাশটির ব্যাকআপ রাখব এবং তারপরে পাসওয়ার্ডটি পরিবর্তন করব। দেখুন কে কে চিৎকার করছে .. বা যদি এলোমেলোভাবে আপনার ফিরে পরিবর্তন হয় তবে তাদের ধরার জন্য সন্ধান করুন।
কেনেথ ফিশার

অ্যাক্সেস পাওয়ার জন্য বা অন্য কারও অ্যাক্সেস আটকাতে পাসওয়ার্ডটি পরিবর্তন করা হয়েছিল কিনা তা সম্পূর্ণ পরিষ্কার নয়। কেবল এটি উল্লেখ করে কারণ কেউ হয়তো চিৎকার করবে না। আত্মীয়ও হয়ত জানত না যে আসল পাসওয়ার্ডটি কী।
অ্যারন বারট্রান্ড

আসল পাসওয়ার্ডটি হ্যাশ ব্যবহার করে পুনরায় সেট করা যেতে পারে (আমাকে জিজ্ঞাসা করুন আমি কীভাবে হা হা জানি), যা লেনদেন লগের কোথাও হওয়া উচিত।
জন সেগেল

উত্তর:


11

আপনি যদি আগে থেকে সেট আপ করেন তবে আমার নিবন্ধটি সাহায্য করবে, তবে ঘটনাটি অতীতে যখন ঘটেছিল এবং আপনার কোনও ধরণের নিরীক্ষণ ব্যবস্থা স্থাপন করা হয়নি তখন তা নয়।

এখনও আশা আছে। ধরা যাক আমি এটি করেছি:

CREATE LOGIN flooberella WITH PASSWORD = N'x', CHECK_POLICY = OFF;

এই তথ্যটি ইভেন্টক্লাস 104 (নিরীক্ষণ অ্যাডলগিন ইভেন্ট) এর অধীনে ডিফল্ট ট্রেসে রয়েছে। তবে, আমি যদি এই পদ্ধতিগুলির মধ্যে দুটি ব্যবহার করে পাসওয়ার্ড পরিবর্তন করি:

ALTER LOGIN flooberella WITH PASSWORD = N'y';

EXEC sp_password N'y', N'z', N'flooberella';

এই ঘটনাগুলি ডিফল্ট ট্রেস দ্বারা ধরা পড়ে না , স্পষ্ট সুরক্ষার কারণে - অন্য কারও পাসওয়ার্ড কী তা নির্ধারণের জন্য ডিফল্ট ট্রেস অ্যাক্সেস থাকা কারও পক্ষে সম্ভব নয়, এমনকি তারা এটি খুঁজে বের করাও সহজ করে তুলতে চান না একটি পাসওয়ার্ড পরিবর্তন করা হয়েছে (এই ইভেন্টগুলির ফ্রিকোয়েন্সি পোলিং, উদাহরণস্বরূপ, আপনার সুরক্ষা কৌশলের নির্দিষ্ট বৈশিষ্ট্য প্রকাশ করতে পারে)।

তাহলে আপনি আর কি করতে পারেন? যদিও এটি এখনও লগতে থাকা তথ্যের উপর নির্ভর করে এবং এটি কোনও সিস্টেম ডেটাবেসের বিপরীতে একটি অননুমোদিত ডিবিসিসি কমান্ড ব্যবহার করার উপরও নির্ভর করে (আপনি অন্য কোথাও মাস্টারকে ব্যাক আপ করতে এবং এটি অন্য কোথাও পুনরুদ্ধার করতে চাইতে পারেন), আপনি লেনদেন লগ থেকে কিছু তথ্য পেতে পারেন , উদাহরণ:

DBCC LOG(master, 1);

উপরের দুটি কমান্ডের জন্য এটি নিম্নলিখিত (আংশিক) তথ্যের সাথে সারি প্রদান করবে:

Current LSN             Description
======================  ======================================================================
000000f2:000001b8:0002  ALTER LOGIN;0x01050000000000051500000093a3bcd7a9f8fb1417ab13bce8030000
000000f2:000001b8:0004  Alter login change password;0x01050000000000 ... same sid as above ...

খুব বেশি দেখে মনে হচ্ছে না, তবে এখন বর্ণনার 0x অংশটি নিন এবং তারপরে করুন:

SELECT name FROM sys.server_principals
  WHERE sid = 0x01050000000000051500000093a3bcd7a9f8fb1417ab13bce8030000;

ধূমপান বন্দুক! এই ঘটনার জন্য দায়ী ব্যক্তি।

অবশ্যই, যদি তারা ALTER LOGINসমস্ত ক্রিয়াকলাপের জন্য সিনট্যাক্স ব্যবহার করে (যা তাদের পরিবর্তে তারা ব্যবহার করা উচিত sp_password), আপনি ডিফল্ট ডেটাবেস পরিবর্তন করা এবং পাসওয়ার্ড পরিবর্তনকারী কারও মধ্যে পার্থক্য করতে পারবেন না। আপনি এটিও বলতে পারবেন না (অন্তত আমি দেখতে পাচ্ছি) যা লগইন এটি প্রভাবিত করেছে কেবলমাত্র এই ব্যক্তি লগইন পরিবর্তন করেছে । জনের মনে হয় যে এই তথ্যটি লগতেও রয়েছে, তবে আমি এটি খুঁজে পেতে ব্যর্থ হই (সময়ের তথ্যের বিপরীতে, যা আমি কোনওভাবেই অতীতে স্ক্রোল করেছি)।


এসকিউএল সার্ভার ২০১২-তে থাকা ব্যবহারকারীদের জন্য বিভিন্ন উত্তর থাকতে পারে - যদিও আমার সন্দেহ হয় যে পাসওয়ার্ডের পরিবর্তনগুলি এখনও একইভাবে অবহেলিত। একটি পৃথক প্রশ্নের জন্য ছেড়ে দেবে।


আমি তোমাদের ব্যবহার করতে পারে মনে fn_dblog/ fn_dump_dblogবিরুদ্ধে master(অথবা এটা একটি কপি) চিত্র আউট যা প্রধান পরিবর্তন করা হয়েছে, আপনি ব্যবহার spelunk আছে এমনকি যদি DBCC PAGE
জন সেগেল

দেখুন LOP_XACT_BEGINজন্য Transaction IDখুঁজে পেয়েছে। এটিতে সঠিক সময় এবং এটি শুরু হওয়া লগইনের এসআইডি অন্তর্ভুক্ত থাকবে।
রিমাস রুসানু

@ জন আপনি যদি এটি ভাবেন তবে পেজ আইডি এবং স্লট আইডি নাল।
অ্যারন বারট্র্যান্ড

এসকিউএল-এর জন্য কীভাবে লেনদেনটি ফিরিয়ে আনতে হবে তা জানার একটি উপায় থাকতে পারে ... সম্ভবত এটি টিভিতে এই মানগুলি বাস্তবে উপস্থিত থাকা সত্ত্বেও প্রকাশ করছে না।
জন সেগেল

@ জন এগিয়ে যান এবং DBCC LOG(master,3);(বা fn_dblog()সমতুল্য) একবার দেখুন এবং দেখুন যে লক্ষ্যটি সনাক্ত করতে সহায়তা করবে এমন কোনও কিছু আপনি খুঁজে পেতে পারেন কিনা। আমি যখন করি তখন আমি BEGIN TRANSACTION; ALTER LOGIN...আরও কম দরকারী তথ্য পাই যা আমি পিছনে রোল করলে অদৃশ্য হয়ে যায় এবং আমি যদি প্রতিশ্রুতিবদ্ধ হয় তবে উপরের হয়ে যায়।
অ্যারন বারট্রান্ড

4

এটি উত্তর হিসাবে পোস্ট করা, একটি মন্তব্য চেয়ে দীর্ঘ

select top(10) 
    [Transaction ID], 
    [Begin Time], 
    [Transaction Name], 
    [Transaction SID],
    SUSER_SNAME([Transaction SID])
from fn_dblog(null, null)
where Operation = 'LOP_BEGIN_XACT';

Transaction ID Begin Time               Transaction Name                  Transaction SID
-------------- ------------------------ --------------------------------- ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------
0000:00002b12  2014/01/08 20:10:14:890  Event_Session_Startup             NULL
0000:00002b13  2014/01/08 20:10:15:027  DBMgr::StartupDB                  NULL
0000:00002b14  2014/01/08 20:10:15:513  AddGuestUserToTempdb              NULL
0000:00002b15  2014/01/08 20:10:15:537  DBMgr::StartupDB                  NULL
0000:00002b16  2014/01/08 20:10:15:537  DBMgr::StartupDB                  NULL
0000:00002b17  2014/01/08 20:10:15:537  DBMgr::StartupDB                  NULL
0000:00002b18  2014/01/08 20:10:15:540  DBMgr::StartupDB                  NULL
0000:00002b19  2014/01/08 20:10:15:550  DBMgr::StartupDB                  NULL
0000:00002b1a  2014/01/11 11:49:42:760  AutoCreateQPStats                 0x010500000000000515000000A065CF7E784B9B5FE77C877084B65600
0000:00002b1b  2014/01/11 11:53:26:620  test_ack                          0x010500000000000515000000A065CF7E784B9B5FE77C877084B65600

(10 row(s) affected)

1
@ রেমুসরুসানু কেবল তখনই কার্যকর হবে যদি আপনি সরাসরি টি-লগের মধ্যে কী জিজ্ঞাসা করছেন তবে আপনি যদি কোনও ল-লগ ব্যাকআপ থেকে পড়ার চেষ্টা করেন তবে এসআইডিটি কেটে ফেলা হবে। এছাড়াও প্রতিবার fn_dump_dblog বলা হলে এটি একটি নতুন লুকানো এসকিউএলওএস শিডিয়ুলার এবং তিনটি থ্রেড তৈরি করে, যা কখনই দূরে যাবে না এবং কখনও পুনরায় ব্যবহার করা হবে না।
কিন শাহ

1

আপনি সার্ভার স্তরে ডিডিএল ট্রিগারটি ব্যবহার করতে পারেন (নোট করুন যে এই উদাহরণের জন্য আপনার অবশ্যই এসকিউএল সার্ভার ডাটাবেস মেল বৈশিষ্ট্যটি সক্ষম এবং সেট করা থাকতে হবে):

CREATE Trigger [Trg_TrackLoginManagement]
on ALL Server
for DDL_LOGIN_EVENTS
as
set nocount on
declare @data xml,
          @EventType varchar(100),
          @EventTime datetime,
          @ServerName varchar(100),
          @AffectedLoginName varchar(100),
          @WhoDidIt varchar(100),
          @EmailSubject varchar(500),
          @EmailBody varchar(800),
          @EmailRecipients varchar(300)
set @EmailRecipients = 'name@domain.com'
set @data = eventdata()
set @EventType = @data.value('(/EVENT_INSTANCE/EventType)[1]', 'varchar(100)')
set @EventTime = @data.value('(/EVENT_INSTANCE/PostTime)[1]','datetime')
set @ServerName = @data.value('(/EVENT_INSTANCE/ServerName)[1]','varchar(100)')
set @AffectedLoginName = @data.value('(/EVENT_INSTANCE/ObjectName)[1]','varchar(100)')
set @WhoDidIt = @data.value('(/EVENT_INSTANCE/LoginName)[1]','varchar(100)')

set @EmailSubject = 'ALERT: DDL_LOGIN_Event: ' + @EventType + ' occured by ' + @WhoDidIt + ' on ' + @ServerName

set @EmailBody =  'DDL_Login_Event: ' + @EventType + char(10) + 
                 'Event Occured at: ' + convert(Varchar, @EventTime) + char(10) + 
                 'ServerName: ' + @ServerName + char(10) +
                 'Affected Login Name:      ' + @AffectedLoginName + char(10) + 
                 'Event Done by: ' + @WhoDidIt
EXEC msdb.dbo.sp_send_dbmail
    @recipients = @EmailRecipients,
    @body = @EmailBody,
    @subject = @EmailSubject ;
GO
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.