• Ana Sayfa
  • Windows 10
  • System Admin
  • Network
  • Exchange
    • Outlook
Cuma, Şubat 3, 2023
  • Login
  • Ana Sayfa
  • Windows 10
  • System Admin
  • Network
  • Exchange
    • Outlook
No Result
View All Result
Önder Online
  • Ana Sayfa
  • Windows 10
  • System Admin
  • Network
  • Exchange
    • Outlook
No Result
View All Result
Önder Online
No Result
View All Result
Home System Admin

Silinen dosyaları SQL Veritabanına (MySQL / MSSQL) Kayıt Altına Alın

ondermonder by ondermonder
Kasım 21, 2020
in System Admin
0 0
0
Silinen dosyaları SQL Veritabanına (MySQL / MSSQL) Kayıt Altına Alın
0
SHARES
404
VIEWS
Share on FacebookShare on Twitter

Bu yazımda Serverda silinen dosyaların olay günlüklerinde nasıl denetlendiğini anlattım, şimdi ise bunu veritabında nasıl saklanacağını yazıya döküyorum.

Silinen dosyaların denetimi etkinleştirilse bile, günlüklerde bir şeyler bulmak zahmetli olabilir. İlk olarak, binlerce olay arasında belirli bir giriş bulmak oldukça zordur (Windows’ta esnek bir filtre ile bir olayı aramak için uygun bir araç yoktur). İkinci olarak, bir dosya uzun süre önce silinmişse, bu olay yeni olaylar tarafından üzerine yazıldığı için günlüklerde bulunmayabilir.

READ ALSO

Ntdsutil ile etki Alanı Denetleyicisini Adım Adım Kaldırma

Active Directoryde şifreyi kim sıfırladı?

Tüm dosya silme olaylarını SQL veritabanına kaydedebilirsiniz. Etkinliklerinizi depolamak için Microsoft SQL Server, Elasticsearch veya MySQL / MariaDB veritabanlarını kullanabilirsiniz.

Bu örnekte, denetim olaylarını bir MySQL’deki ayrı bir veritabanı tablosuna nasıl kaydedeceğinizi göstereceğiz. Aşağıdaki tablo formatını kullanacağım:

Sunucu adı;
Silinen dosyanın adı;
Tarih ve saat;
Dosyayı silen kullanıcının adı.
Tablomuzu oluşturalım :

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));

Geçerli gün için Güvenlik günlüğünden EventID 4663 ile olayları almak için aşağıdaki PowerShell komut dosyasını kullanabilirsiniz:

$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
}
}

Bir sonraki PowerShell betiği, aldığınız verileri uzak bir sunucudaki MySQL veritabanına yazacaktır (IP adresi 10.1.1.13 ile):

Add-Type –Path ‘C:\Program Files (x86)\MySQL\MySQL Connector Net 8.0.21\Assemblies\v4.5.2\MySql.Data.dll’
$Connection = [MySql.Data.MySqlClient.MySqlConnection]@{ConnectionString=’server=localhost;uid=root;pwd=;database=sys’}
$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()

Şimdi, ” AnnualReport.DOC ” dosyasını kimin sildiğini bulmak için, PowerShell konsolunda aşağıdaki betiği çalıştırmak yeterli:

 

Add-Type –Path ‘C:\Program Files (x86)\MySQL\MySQL Connector Net 8.0.21\Assemblies\v4.5.2\MySql.Data.dll’
$Connection = [MySql.Data.MySqlClient.MySqlConnection]@{ConnectionString=’server=localhost;uid=root;pwd=;database=sys’}
$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()

Olay günlüğünden veritabanına bilgi yazma komut dosyası günün sonunda Görev Zamanlayıcı kullanılarak çalıştırılabilir veya daha fazla kaynak tüketen dosya silme Olay Kimliği’ne (Olayda) eklenebilir .

 

Gerekirse dosyaları silen kullanıcılar hakkında daha rahat bir şekilde bilgi almak için basit bir PHP web sayfası oluşturabilirsiniz.

Önemli ipucu . Günlük, dosyanın kullanıcı tarafından silindiğine dair bir girdi içeriyorsa, bunu kasıtlı veya kötü niyetli bir eylem olarak yorumlamak için acele etmeyin. Çoğu program (özellikle MS Office uygulamaları) değişiklikleri kaydederken geçici bir dosya oluşturur ve ardından dosyanın eski sürümünü siler. Bu durumda, dosyanın silindiği işlem adının (İşlemAdı dosyası) günlüğe kaydedilmesini etkinleştirin ve buna göre dosya silme olaylarını ayrıştırabilirsiniz. Veya olayları winword.exe, excel.exe gibi işlemlerden filtreleyebilirsiniz.

Günlük Dosyası Denetim Olaylarını Bir Metin Dosyasına Verme

Ayrı bir veritabanı sunucusu kullanmak istemiyorsanız, dosya silme denetim olaylarını bir düz metin günlük dosyasına kaydedebilirsiniz. Çıktınızı bir metin dosyasına kaydetmek için bu PowerShell betiğini kullanın:

$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
}
}

Tags: MySQLMySQL ConnectorPowerShell

Related Posts

Ntdsutil ile etki Alanı Denetleyicisini Adım Adım Kaldırma
System Admin

Ntdsutil ile etki Alanı Denetleyicisini Adım Adım Kaldırma

Nisan 14, 2022
Active Directoryde şifreyi kim sıfırladı?
System Admin

Active Directoryde şifreyi kim sıfırladı?

Nisan 14, 2022
Etki Alanına Katıldıktan Sonra Masaüstü Simgeleri Etkinleştirilemiyor
System Admin

Etki Alanına Katıldıktan Sonra Masaüstü Simgeleri Etkinleştirilemiyor

Nisan 14, 2022
Windows Arama
System Admin

Windows Arama

Nisan 14, 2022
System Admin

How to Add Active Directory Schema Snap-In

Kasım 11, 2021
Changed Block Tracking – Patch Release ESXi600-201511001 (2137545)
System Admin

Changed Block Tracking – Patch Release ESXi600-201511001 (2137545)

Nisan 7, 2021
Next Post
Windows PS ile Brute Force edilen kullanıcı denemelerini almak

Windows PS ile Brute Force edilen kullanıcı denemelerini almak

Dostlar




  • Buy JNews
  • Landing Page
  • Documentation
  • Support Forum

© 2020 Önder AKÖZ

No Result
View All Result
  • Ana Sayfa
  • Network
  • System Admin
  • Windows 10
  • Exchange
    • Outlook

© 2020 Önder AKÖZ

Welcome Back!

Login to your account below

Forgotten Password?

Create New Account!

Fill the forms below to register

*By registering into our website, you agree to the Terms & Conditions and Privacy Policy.
All fields are required. Log In

Retrieve your password

Please enter your username or email address to reset your password.

Log In
This website uses cookies. By continuing to use this website you are giving consent to cookies being used. Visit our Privacy and Cookie Policy.