Computer >> कंप्यूटर >  >> प्रणाली >> Windows Server

ऑडिट पॉलिसी के साथ विंडोज सर्वर पर फाइल को किसने डिलीट किया है इसका पता कैसे लगाएं?

आप किसी विशिष्ट उपयोगकर्ता की पहचान करने के लिए फ़ाइल सिस्टम ऑब्जेक्ट एक्सेस इवेंट ऑडिटिंग का उपयोग कर सकते हैं जिसने किसी विशिष्ट फ़ाइल को बनाया, हटाया या संशोधित किया है। इस लेख में, हम आपको दिखाएंगे कि विंडोज सर्वर 2016 पर एक साझा नेटवर्क फ़ोल्डर पर फ़ाइलों के लिए ईवेंट ऑडिटिंग को कैसे कॉन्फ़िगर किया जाए। ऑडिटिंग को कॉन्फ़िगर करने के बाद, आप उस उपयोगकर्ता को खोजने के लिए इवेंट व्यूअर से जानकारी का उपयोग कर सकते हैं जिसने फ़ाइल पर विशिष्ट फ़ाइल को हटा दिया है। सर्वर।

जब आप किसी साझा नेटवर्क फ़ोल्डर से किसी फ़ाइल को हटाते हैं, तो उसे उपयोगकर्ता के रीसायकल बिन में भेजे जाने के बजाय तुरंत हटा दिया जाता है। शेयर फोल्डर पर खोली गई फाइलों की सूची निम्नानुसार प्राप्त की जा सकती है।

विंडोज पर फाइल और फोल्डर एक्सेस ऑडिटिंग पॉलिसी को कैसे इनेबल करें?

डिफ़ॉल्ट रूप से, विंडोज सर्वर पर फाइल सिस्टम ऑब्जेक्ट एक्सेस ऑडिट सक्षम नहीं है। आप समूह नीति का उपयोग करके ऑडिट सेटिंग्स को सक्षम और कॉन्फ़िगर कर सकते हैं। यदि आपको एकाधिक सर्वर या कंप्यूटर पर ऑडिट नीतियों को सक्षम करने की आवश्यकता है, तो आप डोमेन जीपीओ (gpmc.msc का उपयोग करके कॉन्फ़िगर करने योग्य) का उपयोग कर सकते हैं। एमएमसी कंसोल)। यदि आप केवल एक सर्वर पर ऑडिटिंग कॉन्फ़िगर करना चाहते हैं, तो आप स्थानीय समूह नीति संपादक का उपयोग कर सकते हैं।

  1. स्थानीय समूह नीति संपादक कंसोल खोलें - gpedit.msc;
  2. उन्नत ऑडिट नीतियों के साथ GPO अनुभाग पर जाएं:Windows सेटिंग्स -> सुरक्षा सेटिंग्स -> उन्नत ऑडिट नीति कॉन्फ़िगरेशन -> ऑब्जेक्ट एक्सेस;
  3. ऑडिट फ़ाइल सिस्टम खोलें नीति बनाएं और निर्दिष्ट करें कि आप सिस्टम ऑब्जेक्ट को फ़ाइल करने के लिए केवल सफल एक्सेस इवेंट लॉग करना चाहते हैं (निम्न ऑडिट ईवेंट कॉन्फ़िगर करें -> सफलता ); आप ऑब्जेक्ट ऑब्जेक्ट एक्सेस का ऑडिट करें . का उपयोग करके स्थानीय ऑब्जेक्ट एक्सेस की ऑडिटिंग को भी सक्षम कर सकते हैं Windows सेटिंग -> सुरक्षा सेटिंग -> स्थानीय नीति -> ऑडिट नीति . के अंतर्गत नीति . हालाँकि, फ़ाइल सिस्टम ऑडिट नीति का उपयोग करना बेहतर है क्योंकि यह केवल NTFS एक्सेस इवेंट को ट्रैक करता है। ऑडिट पॉलिसी के साथ विंडोज सर्वर पर फाइल को किसने डिलीट किया है इसका पता कैसे लगाएं?
  4. परिवर्तन सहेजें और कमांड का उपयोग करके अपनी स्थानीय समूह नीति सेटिंग अपडेट करें:gpupdate /force

साझा फ़ोल्डर पर फ़ाइल हटाई गई ऑडिट सेटिंग कॉन्फ़िगर करना

अब आपको उस शेयर नेटवर्क फ़ोल्डर के गुणों में ऑडिटिंग कॉन्फ़िगर करने की आवश्यकता है, जिस तक आप पहुंच को ट्रैक करना चाहते हैं। फ़ाइल एक्सप्लोरर चलाएँ और फ़ोल्डर गुण खोलें। सुरक्षा . पर जाएं टैब। उन्नत . क्लिक करें बटन -> ऑडिटिंग . पर जाएं टैब।

यदि संदेश "आपको एक व्यवस्थापक होना चाहिए या इस ऑब्जेक्ट के ऑडिट गुणों को देखने के लिए उपयुक्त विशेषाधिकार दिए गए हैं ” प्रकट होता है, जारी रखें . क्लिक करें बटन।

ऑडिट पॉलिसी के साथ विंडोज सर्वर पर फाइल को किसने डिलीट किया है इसका पता कैसे लगाएं?

फिर जोड़ें . क्लिक करें उस उपयोगकर्ता या समूह को निर्दिष्ट करने के लिए बटन जिसके लिए आप ऑडिट इवेंट कैप्चर करना चाहते हैं। यदि आप सभी उपयोगकर्ताओं के लिए एक्सेस ईवेंट ट्रैक करना चाहते हैं, तो सभी . निर्दिष्ट करें समूह।

फिर आपको यह निर्दिष्ट करने की आवश्यकता है कि ऑब्जेक्ट तक पहुंचने के लिए उपयोग की जाने वाली अनुमतियों को लॉग किया जाना चाहिए। इवेंट लॉग में केवल फ़ाइल हटाने की घटनाओं को सहेजने के लिए, उन्नत अनुमतियां दिखाएं क्लिक करें बटन। ईवेंट सूची में, केवल फ़ोल्डर और फ़ाइल हटाने की घटनाओं के लिए ऑडिटिंग छोड़ दें - हटाएं और सबफ़ोल्डर और फ़ाइलें हटाएं

ऑडिट पॉलिसी के साथ विंडोज सर्वर पर फाइल को किसने डिलीट किया है इसका पता कैसे लगाएं?

युक्ति . याद रखें कि Windows ऑब्जेक्ट के लिए ऑडिटिंग नीति के लिए अतिरिक्त कंप्यूटिंग संसाधनों की आवश्यकता होती है। इसका सावधानी से उपयोग करें, हमेशा ऑडिट ऑब्जेक्ट और लॉग करने के लिए ईवेंट की संख्या को कम करने का प्रयास करें।

$Path = "E:\Public"
$AuditChangesRules = New-Object System.Security.AccessControl.FileSystemAuditRule('Everyone', 'Delete,DeleteSubdirectoriesAndFiles', 'none', 'none', 'Success')
$Acl = Get-Acl -Path $Path
$Acl.AddAuditRule($AuditChangesRules)
Set-Acl -Path $Path -AclObject $Acl

अब, यदि उपयोगकर्ता साझा नेटवर्क फ़ोल्डर में किसी फ़ाइल या फ़ोल्डर को हटाता है, तो फ़ाइल सिस्टम -> ऑडिट सफलता फ़ाइल हटाने की घटना सुरक्षा लॉग में इवेंट आईडी 4663 के साथ दिखाई देती है। Microsoft Windows सुरक्षा ऑडिटिंग . से स्रोत।

ईवेंट व्यूअर खोलें एमएमसी कंसोल (eventvwr.msc ), Windows लॉग्स . को विस्तृत करें -> सुरक्षा अनुभाग। EventID 4663 द्वारा ईवेंट लॉग फ़िल्टर सक्षम करें।

ऑडिट पॉलिसी के साथ विंडोज सर्वर पर फाइल को किसने डिलीट किया है इसका पता कैसे लगाएं?

ईवेंट व्यूअर में कोई भी शेष ईवेंट खोलें। जैसा कि आप देख सकते हैं, इसमें हटाई गई फ़ाइल के नाम, फ़ाइल को हटाने वाले उपयोगकर्ता के खाते और प्रक्रिया के नाम के बारे में जानकारी है।

 किसी ऑब्जेक्ट तक पहुंचने का प्रयास किया गया था विशेषताएं:            S:AIProcess जानकारी:प्रक्रिया आईडी:                                        0x4 प्रक्रिया का नाम:एक्सेस अनुरोध जानकारी:एक्सेस:

ऑडिट पॉलिसी के साथ विंडोज सर्वर पर फाइल को किसने डिलीट किया है इसका पता कैसे लगाएं?

फ़ाइल एक्सेस ऑडिटिंग नीति को सक्षम करने के बाद, आप सुरक्षा लॉग में पा सकते हैं:

  • साझा नेटवर्क फ़ोल्डर से फ़ाइल को किसने हटाया और कब हुआ;
  • फ़ाइल को हटाने के लिए किस एप्लिकेशन (प्रक्रिया) का उपयोग किया गया था;
  • बैकअप को पुनर्स्थापित करने की तिथि क्या है।

SQL डेटाबेस (MySQL/MSSQL) में फ़ाइल हटाने की घटनाओं को कैसे लिखें?

हालाँकि, भले ही हटाई गई फ़ाइलों का ऑडिट सक्षम हो, लॉग में कुछ खोजने में परेशानी हो सकती है। सबसे पहले, हजारों घटनाओं के बीच एक विशिष्ट प्रविष्टि खोजना काफी कठिन है (विंडोज़ में एक लचीले फिल्टर के साथ एक घटना को खोजने के लिए कोई सुविधाजनक उपकरण नहीं है)। दूसरे, यदि कोई फ़ाइल बहुत समय पहले हटा दी गई थी, तो यह ईवेंट लॉग में अनुपस्थित हो सकता है, क्योंकि इसे नए ईवेंट द्वारा अधिलेखित कर दिया गया था।

आप सभी फाइल डिलीट इवेंट्स को SQL डेटाबेस में सेव कर सकते हैं। आप अपने ईवेंट को संग्रहीत करने के लिए Microsoft SQL Server, Elasticsearch, या MySQL/MariaDB डेटाबेस का उपयोग कर सकते हैं।

इस उदाहरण में, हम आपको दिखाएंगे कि MySQL पर एक अलग डेटाबेस तालिका में ऑडिट ईवेंट कैसे लॉग करें। मैं निम्न तालिका प्रारूप का उपयोग करूंगा:

  • सर्वर का नाम;
  • हटाई गई फ़ाइल का नाम;
  • तारीख और समय;
  • उस उपयोगकर्ता का नाम जिसने फ़ाइल को हटा दिया है।

इस तालिका को बनाने के लिए MySQL क्वेरी इस तरह दिखती है:

CREATE TABLE deleted_items (id INT NOT NULL AUTO_INCREMENT, server VARCHAR(100), file_name VARCHAR(255), dt_time  DATETIME, user_name VARCHAR(100),  PRIMARY KEY (ID));

नोट . PowerShell से MySQL डेटाबेस को कैसे एक्सेस करें इसका एक उदाहरण पहले लेख में PowerShell के साथ MySQL डेटाबेस को क्वेरी करने पर विचार किया गया था।

यदि आप माइक्रोसॉफ्ट एसक्यूएल सर्वर डेटाबेस का उपयोग करना चाहते हैं, तो लेख "पावरशेल से एमएसएसक्यूएल सर्वर क्वेरी कैसे चलाएं?" देखें।

वर्तमान दिन के लिए सुरक्षा लॉग से EventID 4663 के साथ ईवेंट प्राप्त करने के लिए, आप निम्न PowerShell स्क्रिप्ट का उपयोग कर सकते हैं:

$today = get-date -DisplayHint date -UFormat %Y-%m-%d
Get-WinEvent -FilterHashTable @{LogName="Security";starttime="$today";id=4663} | Foreach {
$event = [xml]$_.ToXml()
if($event)
{
$Time = Get-Date $_.TimeCreated -UFormat "%Y-%m-%d %H:%M:%S"
$File = $event.Event.EventData.Data[6]."#text"
$User = $event.Event.EventData.Data[1]."#text"
$Computer = $event.Event.System.computer
}
}

ऑडिट पॉलिसी के साथ विंडोज सर्वर पर फाइल को किसने डिलीट किया है इसका पता कैसे लगाएं?

अगली पावरशेल स्क्रिप्ट एक दूरस्थ सर्वर (आईपी पते 10.1.1.13 के साथ) पर MySQL डेटाबेस में प्राप्त होने वाले डेटा को लिखेगी:

Add-Type –Path ‘C:\Program Files (x86)\MySQL\MySQL Connector Net 6.9.8\Assemblies\v4.5\MySql.Data.dll'
$Connection = [MySql.Data.MySqlClient.MySqlConnection]@{ConnectionString='server=10.1.1.13;uid=posh;pwd=P@ssw0rd;database=aduser'}
$Connection.Open()
$sql = New-Object MySql.Data.MySqlClient.MySqlCommand
$sql.Connection = $Connection
$today = get-date -DisplayHint date -UFormat %Y-%m-%d
Get-WinEvent -FilterHashTable @{LogName="Security";starttime="$today";id=4663} | Foreach {
$event = [xml]$_.ToXml()
if($event)
{
$Time = Get-Date $_.TimeCreated -UFormat "%Y-%m-%d %H:%M:%S"
$File = $event.Event.EventData.Data[6]."#text"
$File = $File.Replace(‘\’,’|’)
$User = $event.Event.EventData.Data[1]."#text"
$Computer = $event.Event.System.computer
$sql.CommandText = "INSERT INTO deleted_items (server,file_name,dt_time,user_name ) VALUES ('$Computer','$File','$Time','$User')"
$sql.ExecuteNonQuery()
}
}
$Reader.Close()
$Connection.Close()

किसी बाहरी डेटाबेस में ईवेंट सहेजने के बाद, इस ईवेंट लॉग को साफ़ किया जा सकता है।

अब, यह पता लगाने के लिए कि "वार्षिक रिपोर्ट.DOC . फ़ाइल को किसने हटाया है “, PowerShell कंसोल में निम्न स्क्रिप्ट चलाने के लिए पर्याप्त है:
$DeletedFile = "%AnnualReport.DOC%"
Set-ExecutionPolicy RemoteSigned
Add-Type –Path ‘C:\Program Files (x86)\MySQL\MySQL Connector Net 6.9.8\Assemblies\v4.5\MySql.Data.dll'
$Connection = [MySql.Data.MySqlClient.MySqlConnection]@{ConnectionString='server=10.1.1.13;uid=posh;pwd=P@ssw0rd;database=aduser'}
$Connection.Open()
$MYSQLCommand = New-Object MySql.Data.MySqlClient.MySqlCommand
$MYSQLDataAdapter = New-Object MySql.Data.MySqlClient.MySqlDataAdapter
$MYSQLDataSet = New-Object System.Data.DataSet
$MYSQLCommand.Connection=$Connection
$MYSQLCommand.CommandText="SELECT user_name,dt_time    from  deleted_items where file_name LIKE '$DeletedFile'"
$MYSQLDataAdapter.SelectCommand=$MYSQLCommand
$NumberOfDataSets=$MYSQLDataAdapter.Fill($MYSQLDataSet, "data")
foreach($DataSet in $MYSQLDataSet.tables[0])
{
write-host "User:" $DataSet.user_name "at:" $DataSet.dt_time
}
$Connection.Close()

अब आप PS कंसोल में उपयोगकर्ता नाम और फ़ाइल को हटाए जाने का समय देख सकते हैं।

ऑडिट पॉलिसी के साथ विंडोज सर्वर पर फाइल को किसने डिलीट किया है इसका पता कैसे लगाएं?

नोट . चूंकि एक समस्या का पता चला है कि प्रतीक “\ "डेटाबेस पर नहीं लिखा गया है, हमने इसे "| . के लिए बदल दिया है " इसलिए यदि आपको फ़ाइल का पूरा पथ प्रदर्शित करना है, तो आप डेटाबेस से चयन करते समय एक रिवर्स प्रतिस्थापन कर सकते हैं:

$DataSet.file_name.Replace(‘|’,’\’).

इवेंट लॉग से डेटाबेस में जानकारी लिखने की स्क्रिप्ट को टास्क शेड्यूलर का उपयोग करके दिन के अंत में चलाया जा सकता है या फ़ाइल विलोपन EventID (ऑन इवेंट) से जोड़ा जा सकता है, जो अधिक संसाधन-खपत है। यह सिस्टम की आवश्यकताओं पर निर्भर करता है।

युक्ति . सुनिश्चित करें कि आपने सुरक्षा इवेंट लॉग फ़ाइल का अधिकतम आकार उस दिन के सभी ईवेंट लॉग करने के लिए पर्याप्त रूप से बड़ा करने के लिए सेट किया है। अन्यथा, आपको दिन में एक बार या ट्रिगर पर भी डेटा को डेटाबेस में निर्यात करने का कार्य अधिक बार चलाना होगा। आमतौर पर, अधिकतम लॉग आकार कार्यस्थानों पर कम से कम 64 . होना चाहिए एमबी, और 262 विंडोज फाइल सर्वर पर एमबी। पुराने ईवेंट को अधिलेखित करने का विकल्प सक्षम छोड़ दिया जाना चाहिए (आवश्यकतानुसार ईवेंट को अधिलेखित करें )।

यदि आवश्यक हो, तो आप उन उपयोगकर्ताओं के बारे में जानकारी प्राप्त करने के लिए एक सरल PHP वेब पेज बना सकते हैं, जिन्होंने फ़ाइलों को अधिक सुविधाजनक रूप में हटा दिया है।

महत्वपूर्ण युक्ति . यदि लॉग में एक प्रविष्टि है कि फ़ाइल को उपयोगकर्ता द्वारा हटा दिया गया था, तो इसे जानबूझकर या दुर्भावनापूर्ण कार्रवाई के रूप में व्याख्या करने में जल्दबाजी न करें। कई प्रोग्राम (विशेष रूप से MS Office ऐप्स) परिवर्तनों को सहेजते समय एक अस्थायी फ़ाइल बनाते हैं और फिर फ़ाइल के पुराने संस्करण को हटा देते हैं। इस मामले में, प्रक्रिया नाम (ProcessName fileld) की लॉगिंग सक्षम करें, जिससे फ़ाइल हटाई गई थी, और आप इसके आधार पर फ़ाइल हटाने की घटनाओं को पार्स कर सकते हैं। या आप ऐसी प्रक्रियाओं से घटनाओं को फ़िल्टर कर सकते हैं, जैसे winword.exe, excel.exe, आदि।

फ़ाइल लॉगिंग एक टेक्स्ट फ़ाइल में ऑडिट इवेंट हटाएं

यदि आप एक अलग डेटाबेस सर्वर का उपयोग नहीं करना चाहते हैं, तो आप फ़ाइल हटाने की ऑडिट घटनाओं को एक सादे पाठ लॉग फ़ाइल में सहेज सकते हैं। आउटपुट को टेक्स्ट फ़ाइल में सहेजने के लिए इस पावरशेल स्क्रिप्ट का उपयोग करें:

$Outfile = "C:\Logs\Deleted-file-history-log.txt"
$today = get-date -DisplayHint date -UFormat %Y-%m-%d
Get-WinEvent -FilterHashTable @{LogName="Security";starttime="$today";id=4663} | Foreach {
$event = [xml]$_.ToXml()
if($event)
{
$Time = Get-Date $_.TimeCreated -UFormat "%Y-%m-%d %H:%M:%S"
$File = $event.Event.EventData.Data[6]."#text"
$User = $event.Event.EventData.Data[1]."#text"
$strLog = $Computer + " " + $File + " " + $Time + " " +  $User
$strLog  | out-file $Outfile –append
}
}

ऑडिट पॉलिसी के साथ विंडोज सर्वर पर फाइल को किसने डिलीट किया है इसका पता कैसे लगाएं?

इसलिए, हमने साझा नेटवर्क फ़ोल्डरों में हटाई गई फ़ाइलों के बारे में जानकारी को ऑडिट और संग्रहीत करने के लिए एक विचार और सिस्टम के सामान्य मॉडल का सुझाव दिया है। यदि आवश्यक हो, तो इसे आपकी आवश्यकताओं को पूरा करने के लिए आसानी से संशोधित किया जा सकता है।


  1. Windows 10 में किसी फ़ाइल को कैसे एन्क्रिप्ट करें?

    क्या आप जानते हैं कि आप विंडोज 10 पीसी में एक फाइल को एन्क्रिप्ट कर सकते हैं और उसी समय इसे पासवर्ड से सुरक्षित रख सकते हैं? यह सुनिश्चित करता है कि कोई भी आपकी निजी फाइलों को खोलने में सक्षम नहीं होगा, जिन्हें आप चाहते हैं। किसी फ़ाइल को एन्क्रिप्ट करना किसी फ़ाइल या फ़ोल्डर को लॉक करने जैसा नहीं ह

  1. Windows 7, 8, 10 PC में स्थायी रूप से हटाई गई फ़ाइलें कैसे पुनर्प्राप्त करें

    किसी समय, आपने फ़ाइल को स्थायी रूप से हटा दिया होगा (फ़ोटो, ऑडियो, वीडियो, दस्तावेज़ आदि) इसे आपके लिए अप्रासंगिक मानते हुए आपके कंप्यूटर से। फिर भी, आपको एक ऐसी स्थिति का सामना करना पड़ा जब आपको उस फ़ाइल की आवश्यकता थी (और इसका कोई अन्य विकल्प नहीं)। और फिर भी, आप इसे अपने रीसायकल बिन से पुनर्प्राप

  1. Windows 10, 8, 7 में Shift डिलीट हुई फाइल्स को कैसे रिकवर करें

    Shift ने किसी फाइल को यह सोचकर डिलीट कर दिया कि यह कभी किसी काम की नहीं होगी? अगर आपने गलती से कोई फाइल डिलीट कर दी तो क्या होगा? चिंता मत करो! ये कुछ सामान्य गलतियाँ हैं जो हम करते हैं, एक ऐसी गलती जिसे वापस किया जा सकता है। जी हां, आपने सही सुना, आप शिफ्ट डिलीट की गई फाइल को रिकवर कर सकते हैं। हा