28 Haziran 2016

MSSQL Server Log Ayarları

SQL server audit işlemi için 2 farklı loglama biçimi sunmaktadır. Bunlar Windows Event Log ve Binary File formatlarıdır. Windows event log formatında kayıt yapmak mantıklı gözükmektedir. Çünkü birçok log yönetim çözümü bu formatı desteklemektedir. Ancak güvenlik ve performans açısından daha çok önerilen yöndem binary file formatı ile kayıt etmekdir. Dosyaya yazmak daha hızlı olduğu için performans sebebiyle Windows tarafından da bu yöntem önerilir. Bu kayıtların ele geçirilmiş yönetici hesaplarından gelebilecek olası saldırılar gibi çeşitli sebeplerle dosyalar halinde ve farklı bir server üzerinde tutulması en güvenli ve hızlı yol olacaktır.

Audit Konfigürasyonu
Audit seçeneği Express sürümlerde bulunmamaktadır. Anlatımda SQL Server Enterprise


2008 sürümü kullanılmıştır. Audit konfigürasyonu yapmak için SQL Server Management Studio açılır , 'Object Explorer' üzerinde 'Security -> Audits' yolu izlenir. 'Audits' nodu üzerine sağ tıklanıp 'New Audit' seçeneği seçildiğinde karşımıza 'Create Audit' pencerisi çıkar.

'Audit name' kısmına Audit objesinin ismi yazılır. 'Destination' kısmında File, Security log,  Application log seçenekleri seçilebilir. File seçeneğini seçerek dosyanın kayıt edilmesi gerektiği yeri 'File Path' bölümünde gösterebiliriz. Security ve Application log seçenekleri ile ise logların windows event log formatında olması sağlanabilir. Bu işlemden sonra hangi olayların loglanacağını belirlemek için Object Explorer üzerinde 'Server Audit Specification' nodu üzerine sağ tıklanıp 'New Server Audit Specification' seçeneği seçilir. 'Audit Action Type' içerisinden loglanmasını 

istediğimiz olaylar seçilir. 

Burada bir önceki bölümde oluşturulan Audit objesine verilen isim seçilmelidir. Güvenlik ihlallerinin tespiti açısından mümkün olduğunca fazla bilgi olması işimize gelir ancak performans ve bazı diğer sebeplerden dolayı bu çoğu zaman mümkün olmamaktadır. Güvenlik açısından bakıldığında aşağıdaki olayların işaretlenmesi genel olarak önerilmektedir:
  • FAILED_LOGIN_GROUP 
  • SUCCESSFUL_LOGIN_GROUP 
  • DATABASE_OBJECT_CHANGE_GROUP
  • DATABASE_PRINCIPAL_CHANGE_GROUP 
  • SCHEMA_OBJECT_CHANGE_GROUP 
  • SERVER_PRINCIPAL_CHANGE_GROUP 
  • LOGIN_CHANGE_PASSWORD_GROUP 
  • SERVER_STATE_CHANGE_GROUP 
Bu şekilde kayıt ettikten sonra Audit Object ve Audit Specifications nodelarına sağ tıklanarak 'Enable' seçeneğine tıklanarak aktif hale getirilmelidir. Artık belirttiğimiz olayların logları tutulacaktır.  

Audit Act'on Gruplari 
  • Server-level : Bu olaylar yönetimde yapılan değişikliklerini, logon/logoff gibi server operasyonlarıyla ilgili olaylardır.
  • Database-level : Data manipulation language ve Data definition language operasyonlarını kapsar. Database, tablo, fonksiyon, stored procedur gibi schema objelerini ilgilendiren olaylardır. Örneğin SELECT, ALTER gibi SQL komutlarını loglamak için 
  • Audit-level : Auditing process'iyle ilgili olayları içerir.
Destination olarak Windows Event Log seçeniğini kullandığımızda kayıt edilen loglara erişmek için Object Explorer üzerinde 'Management' nodu içerisinde 'SQL Server Logs' başlığı altında



Windows logları görüntülenebilir. Örneğin aşağıda örnek bir brute force kayıtlarını inceleyebiliriz.

Destination olarak file seçeneği seçildiğinde Binary File formatı geçerli olur ve belirtilen adrese log dosyaları yazılır. Bu dosya dizin üzerinden erişilip açılırsa binary formatta olduğu için okunamaz. Okumak için yine Object Explorer üzerinde Security -> Audits yolu takip edilir ve oluşturduğumuz Audit objesine sağ tıklanarak view audit log seçeneğine tıklanır.


Referanslar
https://www.manageengine.com/products/eventlog/help/getting-started/enable-mssql-audit-logs.html
https://msdn.microsoft.com/en-us/library/cc280663.aspx

Bu makale İstanbul Teknik Üniversitesi Bilgisayar Mühendisliği Bölümü öğrencisi stajyerimiz Cemal Türkoğlu tarafından geliştirilmiştir.