Logparser Sorgu Sonuçlarının Veritabanına Yazılması
Logparser uygulaması ile birçok
farklı tipteki log dosyaları üzerinde sql dili ile sorgulama yapmak mümkün.
Buna file sistem üzerindeki dosya özellikleri ve standart olmayan csv dosyaları
da dahil. Elde edilen sorgu sonuçları üzerinden farklı çıktılar üretmek mümkün.
Sorgu sonuçlarını csv,xml veya w3c formatlarında dosyaya yazdırabiliriz. Bunun
yanında sorgu sonuçları bir veritabanına aktarılabilir. Şimdi bununla ilgili
basit bir örnek yapalım ve püf noktalarını görelim.
Örnek olarak logparser ile windows
event logları üzerinde bir sorgu çalıştırdığımız ve sonucu sql sunucuya atmak
istediğimizi varsayalım. Adım adım gidelim.
Öncelikle sorgumuzu oluşturalım.
Sonucun istediğimiz gibi görünüp görünmediğine bakalım. Aşağıdaki sorgu windows
event logları üzerinden EventID = 4624 (başarılı login) sahip logları filtreler.
Aşağıdaki sorguyu query.sql isimli bir dosyaya kayıt edelim.
select top 10 TimeGenerated, EventID, EventTypeName, ComputerName, SourceName, Strings
into result.txt
from security where eventid = 4624
Aşağıdaki komutu çalıştırdığımızda sorgu sonucu bir text dosyasına yazılır. Bu sorguyu log dosyasını okuma yetkisine sahip bir kullanıcı ile çalıştırmalısınız. Bir de logparser uygulamasını kurduktan sonra kurulum dizininden alıp system32 altına kopyalamaslısınız. Yoksa cmd de doğrudan çalışmaz. Önce
C:\>Logparser file:query.sql
–i:evt –o:nat –rtp:-1
Şimdi bu sorgu sonucumuzu bir
veritabanına atalım.
İlk adım sunucuya bağlanmak için bir DSN oluşturmak.
Administrative Tools > Data Sources (ODBC) uygulamasını açıyoruz.
Windows un 64
bitlik işletim sistemine sahipseniz bu path altında oluşturduğunuz DSN
Logparser uygulaması tarafından kullanılamıyor olacak. C:\Windows\SysWOW64\ dizini altındaki odbcad32.exe uygulamasını kullanmanız gerekiyor.
“System
DSN” tabı altında Add
seçeneğini seçiyoruz. Driver olarak “SQL
Server” seçiyoruz ve Finish
diyoruz.
Name
kısmına bir isim veriyoruz. (testdsn) Server
kısmına ise sunucu ismini veriyoruz. (testserver)
Şimdi
veritabanına erişmek için bir kullanıcı seçiyoruz. Eğer sorguyu
çalıştıracağımız windows kullanıcısının
veritabanına erişme yetkisi varsa “NT authentication” metodunu
seçebiliriz. Veya bunun yerine bir sql kullanıcısı da seçilebilir. (Bu seçeneği
seçebilmek için veritabanının Mixed
modda olması gerekiyor) Burada dikkat edilmesi gereken nokta seçeceğimiz
kullanıcının ilgili veritabanı ve tablo üzerinde yetkisi olması.
Bu ekranda verileri yazacağımız veritabanı ismini yazıyoruz. (TestDB)
Bir
sonraki adımda herhangi bir değişiklik yapmıyoruz. Son olarak Finish diyoruz ve “Test Data Source” kısmından erişimimiz başarılı mı kontrol
ediyoruz.
Şimdi sorgumuzu değiştirelim. Sorgu sonuçlarını veritabanına atarken INTO kısmında belirtilen kısım tablo ismi olmalıdır. Yeni sorgumuz:
select TimeGenerated, EventID, EventTypeName, ComputerName, SourceName, Strings
into windows_logs
from security where eventid = 4624
Şimdi aşağıdaki sorguyu
çalıştırdığımızda verilerimiz windows_logs
tablosuna yazılacaktır. –createTable seçeneğini ON
yapmakla eğer aynı isimde bir tablo yoksa logparser uygulamasının bu tabloyu
oluşturmasına izin vermiş oluyoruz. Ancak yine burada sorguyu çalıştırdığımız
kullanıcının yetkilerini kontrol etmek gerekiyor.
C:\>Logparser file:query.sql –i:evt
–o:sql –dsn:testdsn –server:testserver –database:TestDB -createTable:ON
Öncesinde tabloyu sizin
oluşturmanız da mümkün. Ancak veri tiplerinin birebir uyuşması gerekiyor.
Burada benim seçtiğim yöntem öncelikle logparser uygulamasına tabloyu create
etmesine izin vermek. Sonrasında veritabanı üzerinde tabloyu DROP
– CREATE seçeneği ile düzenleyerek yeniden oluşturmak.
Son olarak –ignoreIdCols
seçeneğini de açıklamak istiyorum. Verileri sql veritabanına atarken tablodaki
ve sorgu sonucundaki alan sayısının ve veri tiplerinin bire bir eş olması
gerekiyor. Bu seçeneği ON yaptığınız zaman eğer tablo içersinde bir identity
kolon varsa sizin yine de hatasız bir şekilde verileri atabilmenize olanak
tanıyor.
C:\>Logparser file:query.sql –i:evt –o:sql –dsn:testdsn
–server:testserver –database:TestDB -createTable:ON –ignoreIdCols:ON
Yukarıda anlatıldığı gibi bir çok
farklı kaynaktan toplanan loglar veritabanına aktarılır. Veritabanı üzerinden
logları hem sorgulamak hem de raporlamak çok daha kolay olacaktır. Örneğin
verileri attığınız tabloya özel indexler oluşturmak raporlama ve sorgulama
sürelerini çok düşürecektir. (Windows Event Logları için EventID veya
TimeGenerated alanları indexlenebilir.) Aynı zamanda logları farklı kaynaktan gelecek
bilgilerle besleyebilirsiniz. Örneğin bir IPS logunun üzerinde yer alan atak IP
adresleri geolocation bilgisi ile eşleştirilebilir. Loglar veritabanına
aktarıldıktan sonra ne yapılacağı tamamen size kalmış.
Hiç yorum yok:
Yorum Gönderme