Nesnelere Erişimin İzlenmesi
Murat Yıldırımoğlu, Windows 2000 Magazine
dergisinden çeviri
Windows 2000’in Audit object access (Nesneye
erişimi izle) kategorisi kullanıcıların ağınızdaki kaynakları nasıl
kullandığını gösteren iyi bir bilgi kaynağıdır.
Bu kategori ile dosyalara, klasörlere, yazıcılara ve
Kayıt bölümlerine kimlerin, ne zaman ve ne şekilde eriştiğini izleyebilirsiniz.
Bir erişim denemesinin gerçekleştiği oturum hakkında ayrıntılı bilgiler almak
için nesne erişim olaylarını karşılık gelen oturum açma ya da proses izleme
olaylarına bağlayabilirsiniz.
İki Düzeyde İzleme
Nesne erişimini izlemek için Win2K izlemeyi
hem sistem düzeyinde hem de nesne düzeyinde etkinleştirmelisiniz. Önce, Audit object access kategorisini başarılı ve başarısız
olaylar için etkinleştirmelisiniz. (sistem izleme ilkesinin çeşitli
öğelerinin etkinleştirilmesine ilişkin ayrıntlı bilgi için Şubat 2001
sayısındaki “Win2K İçinde oturum Açma ve Kapama Olaylarını İzleme” başlıklı
makaleye bakınız. Win2K Security günlüğü ya da Windows NT
Security günlüğüne ilişkin makalelerin tümü için Önceki Sayılarda Yer Alan
İlgili Makaleler köşesine bakın.) İkinci olarak,
izleyeceğiniz her nesne için izlemeyi etkinleştirmelisiniz. Her nesnenin
iki adet ACL’i (Access Control List: Erişim Denetim Listesi) bulunur: Bir
isteğe bağlı (discretionary) ACL ile sistem ACL’i.
DACL. DACL, nesneye kimin hangi yetki ile erişeceğini denetler. (Çoğunlukla DACL’e ACL denilir.) Dosya ve klasör nesnelerinin DACL’ini görmek
için Windows Explorer’dan ilgili nesnenin üzerine gidip, yazıcı nesnelerinin DACL’ini görmek için Settings (Ayarlar), Printers’dan
ilgili yazıcının üzerine gelip, sağ tıklayıp Properties şıkkı seçilir ve oradan
da Security sekmesine gidilir (Şekil 1). Bu sekmedeki
basitleştirilmiş görünüm bir seferde tek bir kullanıcının ya da grubun o nesne
üzerindeki yetkilerini gösterir. Tüm DACL’i görmek için Advanced tuşuna tıklayın. Bu tuşa
tıkladığınızda, Şekil 2’e görülebileceği gibi, nesnenin Access Control Settings
(Erişim Denetleme Ayarları) kutusu açılır ve nesne üzerinde yetkili bütün
kullanıcı ya da gruplar görüntülenir.
SACL. SACL, Win2K’in bu nesne için hangi eylemleri izlediğini belirler. Bir nesnenin SACL’i erişim denetim
kayıtlarından (access control entry:ACE) oluşur. Bir
ACE, belirtilen kullanıcı ya da grup o nesneye eriştiğinde Win2K’in Security günlüğüne neleri yazması
gerektiğini tanımlar. Her ACE’nin yanında
başarılı ya da başarısız erişim girişimlerine uygulanacağını gösteren bir bilgi
de bulunur. Bir nesnenin SACL’ini
görmek için nesnenin Erişim Denetleme Ayarları kutusu açılır ve Auditing (İzleme) sekmesine gidilir. Auditing
Entires (İzleme Kayıtları) kutusundaki her satır bir ACE’dir. Şekil 3’de örnek bir dosya için (payroll.xls) SACL’i görüyorsunuz.
Burada Win2K’in Everyone (Herkes) grubu için başarılı yazma
erişimini ve başarısız okuma erişimlerini izlemeye aldığını görüyoruz.
Nesneleri Açma Girişimlerini İzleme
Win2K, bir
kullanıcı bir uygulama aracılığı ile erişmek istediği zaman nesne erişimini
izler. Bir kullanıcı bir uygulama üzerinden bir nesneye
erişmek istediği zaman uygulama Win2K’den bir tutamaç (handle) ister. (Tutamaç, bir uygulamanın bir nesne üzerinde işlem yapmasına izin
verir.) İstenilen tutamaçı verip vermemeye karar vermek için Win2K
nesnenin DACL’i ile uygulamayı çalıştıran kullanıcının hesabını ve istenilen
erişim tipini (yazma,okuma vb.) karşılaştırır. Sonra Win2K bu
karşılaştırmanın sonucu için sistem izleme ilkesini etkinleştirip
etkinleştirmediğinize saptar. (Örneğin, erişim
girişimi başarısızlıkla sonuçlanırsa Win2K bu başarısız işlemi günlüğe kaydedip
kaydetmemeye karar vermek için sizin sistem izleme ilkesini etkinleştirip
etkinleştirmediğinizi araştıracaktır.)
Örnek olarak
Harold’ın Microsoft Excel ile çalıştığını payroll.xls dosyasını açmak
istediğini düşünelim. Excel, Win2K’den payroll.xls için bir tutamaç
ister. Win2K, dosyanın DACL’ini Harold’ın hesabı ile ve
Excel’in okuma isteğiyle karşılaştırır; DACL’e göre Harold’ın payroll.xls
dosyasını okuma izni yoktur. (Şekil 2’de görüldüğü
gibi, yalnızca Administrators ve HR gruplarının payroll.xls dosyasına erişim
izni vardır, Harold bu iki gruba da üye değildir.) Win2K,
sistem izleme ilkesinin etkin olduğunu ve başarısız nesne erişimlerini
kaydetmek üzere ayarlandığını belirler. Bu bilgi üzerine işletim sistemi
payroll.xls’in SACL’ini araştırır ve başarısız erişim
girişimlerini kaydetmeyi söyleyen bütün ACE’lere bakar. Win2K,
ACE’lerde Harold’a ya da Harold’ın üyesi bulunduğu gruplara ilişkin bir bilgi
olup olmadığını belirler. Şekil 3’de görüldüğü gibi nesnenin SACL’inde
Everyone grubunun başarısız erişim girişimini kaydetmeyi söyleyen bir ACE
vardır ve Harold Everyone grubunun üyesi olduğu için Win2K, Şekil 4’de
görüldüğü gibi, 560
nolu olayı günlüğe kaydeder.
Sally’nin de
payroll.xls dosyasını açmak istediğini varsayalım. Sally HR grubunun bir üyesi olduğu için payroll.xls dosyası
üzerinde okuma ve yazma yetkilerine sahiptir. Sistem izleme ilkesi
başarılı nesne erişimlerini kaydedecek şekilde ayarlandığı için ve dosyanın
SACL’i Everyone grubunun başarılı yazma erişimini izlemeye alan
bir ACE’ye sahip olduğu için Win2K, Şekil 5’de görüldüğü gibi 560 nolu olayı günlüğe
kaydeder.
560 nolu olayın
alanları kolayca anlaşılır bir yapıdadır. Object Server (Nesne
Sunucusu) alanında her zaman Security (Güvenlik) bilgisi bulunur. Object Type
(Nesne Tipi) alanında izlenilen nesnenin dosya mı, klasör mü, Kayıt anahtarı mı,
yazıcı mı, yoksa bir hizmet mi olduğuna ilişkin bir
bilgi vardır. New Handle (Yeni Tutamaç) alanı yalnızca nesne
başarılı bir şekilde açıldığı zaman doludur.
Kuramsal olarak Process ID (Proses Numarası)
kullanıcının nesneyi açmak için kullandığı uygulamayı belirlemede işe yarar Ama
proses izleme kategorisinin ürettiği 592 nolu olay (yeni proses olayı) diğer
bütün Win2K olaylarından farklı bir bir proses numarası formatı kullanır. (Microsoft’un bu sorunu Windows XP ve kod adı Whistler olan Windows
Server’da düzelttiğini duydum.) Dolaylı nesne erişimini gösteren olaylar
için Process ID alanında, kullanıcının nesneyi açmak için kullandığı istemci
tarafında yer alan uygulamanın bilgisi değil sunucu
uygulamasının bilgisi yer alır. Bir kullanıcı paylaşıma
açılmış bir klasördeki dosyaları açtığında Process ID alanında nesneyi açan
program olarak System prosesi görüntülenir. (Bu bilgiyi teyit etmek
isterseniz Task Manager’ı açın, Processes sekmesine gidin ve PID sütununda
olayın proses numarasına bakın.)
Primary User Name
(Birincil Kullanıcı Adı) ve Primary Domain (Birincil Etki Alanı) kısımlarında
nesneye doğrudan erişen kullanıcının bilgisi yer alır. Kullanıcı Word
ya da Excel gibi bir uygulama ile kendi bilgisayarındaki bir nesneye
eriştiğinde Primary User Name ve Primary Domain alanları gerçek kullanıcı hesabını
yansıtır. Bu durumlarda Client User Name (İstemci Kullanıcı
Adı) ve Client Domain (İstemci Etki Alanı) alanları boştur. Bir kullanıcı bir sunucu uygulaması üzerinden dolaylı olarak
nesneye erişirse Primary User Name ve Primary Domain alanları yerel bilgisayar
hesabını içerir. Bu durumlarda Client User Name ve
Client Domain alanları kullanıcı hesabını içerir. Örneğin, Şekil 6’da
Joe’nun, bir sürücüye eşlemiş olduğu Tecra adında dosya sunucusundaki bir
kaynak üzerinde bulunan, budget.doc adlı bir dosyayı açtığı bir 560 nolu olay
görüyorsunuz. Bu olayda Primary User Name alanında TECRA$
bilgisi görünüyor. Bu ifade dosya sunucusunun etki alanındaki hesabıdır. Client User Name alanında istemci tarafındaki kullanıcı olarak Joe
ifadesi yer alıyor.
Primary Logon ID
ve Client Logon ID alanları, nesneye erişen kullanıcı hesabının oturum açma
kimlik numarasını gösteriyor. Bu erişimin gerçekleştiği
oturumu belirlemek için bu alanlardaki numarayı içeren 540 nolu olayı (uzaktan
oturum açma olayı) ya da 528 nolu olayı (diğer oturum açma olayları) inceleyin.
(Bu olaylara ilişkin bilgi için “Win2K İçinde oturum Açma ve
Kapama Olaylarını İzleme” adlı makaleye bakınız.) Eğer kullanıcı doğrudan
kendi bilgisayarındaki bir nesneyi
açıyorsa 560 nolu olayın Primary Logon ID bilgisi 528 nolu olaydaki
oturum açma numarasına karşılık gelecektir. 528 nolu olay bir
kullanıcı oturum açtığında kaydedilir. Bu durumda
Client Logon ID alanı boş kalır. Kullanıcı bir nesneye
uzaktan erişiyorsa 560 nolu olayın Primary Logon ID alanı yerel bilgisayar
hesabıyla ilişkili oturumu belirler. Karşılık gelen 528 nolu olayın
Client Logon ID’si ise Primary Logon ID’ye işaret eder.
Accesses
(Erişimler) alanı, uygulamanın istediği erişim tiplerini belgeler. Bazı erişim tipleri bir nesnenin sınıfına özgüdür ama çok sayıda
erişim tipi de bütün nesnelere uygulanabilir. Tablo
1’de en çok rastlanılan erişim tipleri ve bunların anlamları yer almaktadır.
Bir kullanıcı bir dosyayı ya da bir klasörü
açtığı zaman Accesses bölümünde dosyaya özgü ya da klasöre özgü erişim tipleri
de yer alır. Bu erişim tipleri dosyanın DACL’inde bulunan
özel izinlere karşılık gelir. ReadAttributes ve WriteAttributes ifadeleri kullanıcının
dosyayı öz niteliklerini (yani, read-only, hidden, system ya da archive
gibi) değiştirebilecek şekilde açtığını
gösterir. ReadEA ve WriteEA ifadeleri ise dosyanın
genişletilmiş niteliklerine karşılık gelir. Bu
nitelikler dosyayı yaratan uygulama tarafından belirlenir. Bir dosyanın genişletilmiş niteliklerini görmek için Windows
Explorer’ı açın, dosyaya sağ tıklayın, Properties’i seçin ve Custom (Özel) ya
da Summary (Özet) sekmelerine gidin.
AppenData ifadesi
kullanıcının açılmış olan dosyaya ekleme yapabileceğini gösterir. ReadData ve WriteData ifadeleri kullanıcının dosyayı okuma ya da
içeriği değiştirebilme yetkileriyle açtığını gösterir. Çalıştırılabilir dosyalar üzerine izleme yaptığınız zaman program
çalıştırıldığında Win2K Execute erişim tipini kaydedecektir.
Win2K, klasörlere
erişimi izlerken de aynı erişim tiplerini kullanır (bir kaç farklılıkla
birlikte). Bu durumda
AppendData ifadesi kullanıcının klasör altında bir alt klasör yarattığını
gösterir. Kullanıcı izlenilen klasör altında bir dosya
yarattığı zaman Win2K WriteData ifadesini yazar. (Yeni alt klasörün ya
da dosyanın adını görmek için hemen sonra gelen ve yeni yavru nesnelere işaret
Nesnelerin Kapanmasını İzleme
Bir kullanıcı bir
uygulama üzerinden bir dosyayı açtığında Win2K 560 nolu olayı günlüğe yazar. Kullanıcı nesneyi kapattığında bu sefer 562 nolu (tutamaç kapandı)
olayı kaydedilir. 562 nolu olayda 560 nolu olayın
alanlarının bir kısmı aynen yer alır.
Şekil 5’de
görülen 560 nolu olaydaki Handle ID alanı ile Şekil 7’de görülen Handle ID
alanlarına bakınız. Win2K açılan her nesne için
farklı bir tutamaç numarası üretir. Böylelikle 560 nolu olaydaki tutamaç
numarası ile aynı numarayı içeren 562 nolu olayı izleyerek bir nesnenin ne kadar süreyle açık tutulduğunu görebilirsiniz. Böyle bir işlem yapmak için Event Viewer’dan 560 nolu bir olayı
açın ve olayın tutamaç numarasını not edin. Sonra
Security günlüğüne sağ tıklayın, View’u ve ardından Find’ı seçin. Event ID alanına 562’yi, Description alanına tutamaç numarasını
girin. Eğer Event Viewer en başta en yeni nesneleri listeliyorsa arama
yönünü yukarı (Up) olarak verin, Find Next tuşuna basın.
Yalnızca Dosyalar
Mı?
Audit object access (Nesne
erişimini izle) kategorisi ile dosya dışındaki nesneleri de izleyebilirsiniz. Örneğin, regedt32 programı ile Kayıt anahtarları üzerinde izlemeyi
etkinleştirebilir ve Kayıt anahtarları ile değerlerine erişimi izlemeye
alabilirsiniz. Kayıt değerlerinin tek tek DACL ya da
SACL’leri bulunmaz. Onların ana anahtarları hem erişimi, hem de izlemeyi
belirler. Win2K anahtarın DACL’in de bulunan izinlere
karşılık gelen erişimleri kaydeder ve izinleri göstermek için 560 nolu olayda
çok açıklayıcı ifadeler kullanır. Bir Kayıt anahtarına
erişim 560 nolu olaya neden olduğunda Win2K, olayın Object Type alanına Key
ifadesini kaydeder. Object Name alanı \Registry ile başlar ve anahtarın
adresiyle devam eder. Örneğin,
HKEY_LOCAL_MACHINE\SOFTWARE\Acme altanahtarı \REGISTRY\MACHINE\SOFTWARE\Acme
şeklinde gösterilir.
Yazıcılara
erişimi de benzer şekilde izleyebilirsiniz. Yalnızca burada erişim
izlemeyi Windows Explorer’dan değil de Settings, Printers alanından
yapacaksınız.
http://www.microsoft.com/technet/security/monito.asp adresindeki
“Monitoring and Auditing for End Systems” (Uç Sistemler İçin Gözleme ve İzleme)
başlıklı Microsoft makalesinde sistem hizmetlerinin izlenebileceği söyleniyorsa
da bunu yapamıyorsunuz. Bir hizmetin SACL’inde izlemeyi etkinleştirseniz bile
(Grup İlkesi içinden Computer Configuration, Windows Settings, Security
Settings, System Services bölümünden) o hizmeti durdurduğunuzda,
başlattığınızda ya da iptal ettiğinizde Win2K hiçbir şey rapor etmiyor. Microsoft belgelerinde başka
bazı işlemler (örneğin nesnelerin silinmesi gibi) için de belirli olay
numaralarından söz ediliyor ama bunlar da işlevsel değil.
SACL Devralımı
Win2K’de
SACL’lerin devralımı DACL’lerin devralım şemasının aynısını uygular. Varsayılan olarak SACL bilgileri ana klasörlerden ve Kayıt
anahtarlarından yavru nesnelere doğru geçirilir. Örneğin,
bir klasör üzerinde başarısız yazma işlemlerini izlemeye aldığınızda bu klasör
altındaki bütün dosya ve alt klasörler bu SACL bilgisini devralırlar. SACL devralımını bir kaç düzeyde özelleştirebilirsiniz.
Yavru düzeyinde. Ana nesnenin SACL bilgilerinin yavru nesneye geçirilmesini
engellemek için yavru nesnenin Erişim Denetim Ayarları diyalog kutusunu açın,
Auditing sekmesine gidin ve “Allow inheritable auditing entries from parent to
propagate to this object” (Devralınabilir izleme bilgilerini ana nesneden yavru
nesneye aktar) kutusunu temizleyin. Sonra OK ya da Apply tuşuna basın.
Ana nesne
düzeyinde. Devralınmayı engelleyen yavru nesnelerin bilgilerini değiştirmek için
şekil 8’de görüldüğü gibi, ana nesnenin Erişim Denetleme Ayarları diyalog
kutusunu açın, Auditing sekmesine gidin ve “Reset auditing on all child objects
and enable propagation of inheritable auditing entries” (Bütün yavru nesnelerin
izleme ayarlarını resetle ve devralınabilir izleme bilgilerinin yavru nesnelere
aktarılmasını sağla) kutusunu işaretleyin. OK ya da Apply tuşuna bastığınızda
Win2K bütün yavru nesnelerin izleme ayarlarını resetler ve devralma kutularını
işaretler. Bu aşamadan sonra siz istediğiniz yavru nesne üzerinde
devralmayı engelleyebilirsiniz. Bu resetleme seçeneği
ana ve yavru nesnelerin izleme seçenekleri karışmış durumdaysa ve sıfırdan
başlamak istiyorsanız çok yararlı olacaktır.
Her SACL kayıtı için devralmanın ne kadar derine ineceğini ve hangi yavru nesnelere
uygulanacağını belirleyebilirsiniz. Bir SACL kayıtını düzenlemek için ana
nesnenin Erişim Denetleme Ayarları diyalog kutusunu açın, Auditing sekmesine
gidin ve Şekil 9’da gösterilen Auditing Entry diyalog kutusunu açmak için
View/Edit tuşuna tıklayın. Bu diyalog kutusu Win2K’in
kayıttaki bilgilerin yavru nesnelere nasıl uygulanacağını gösteren iki seçeneği
gösteriyor. Apply onto (Şu nesnelere uygula) kısmında ne türden
nesnelerin izleme kayıtındaki bilgileri alacağını belirliyoruz. Bu alanda varsayılan
değer olarak This folder, subfolders and files (Bu Klasör, alt klasörleri ve
dosyalar) bilgisi yer alır. Siz kendinize göre bu bilgiyi
değiştirebilirsiniz. (Şekil 9’da klasörler üzerinde değil dosyalar
üzerinde başarısız okuma girişimlerinin izleneceği bilgisi yer alıyor.) “Apply
these auditing entries to objects and/or containers within this container only”
(Bu izleme kayıtlarını yalnızca bu kap içindeki nesnelere ve/veya kaplara
uygula) kutusu ile Win2K’in kayıtları hemen bu klasörün altında yer alan nesnelere mi yoksa bu noktadan sonraki bütün yavru
nesnelere mi uygulayacağını belirleyebilirsiniz.
En İyi Teknikler
Nesne izleme
sırasında hangi stratejileri kullanmalısınız? Birden
fazla sistem üzerinde belli bir klasör ya da Kayıt anahtarını izlemek
istiyorsanız öncelikle Grup İlkelerini kullanmalısınız. Örneğin, etki alanınızdaki her bilgisayarın \%systemroot% klasörü
üzerinde başarısız yazma girişimlerini izlemek istiyorsanız Active Directory
Users and Computers’ı açın, etki alanının köküne sağ tıklayın. Properties’i seçip Group Policy sekmesine gidin. Default
Domain Policy Group Policy Object (GPO) nesnesini seçin, Edit tuşuna basın,
sonra da Computer Configuration, Windows Settings, Security Settings, File
System bölümüne geçin. File System’a sağ tıklayın ve Add File seçeneğini seçin.
Karşınıza çıkan alana
%systemroot%
yazıp OK tuşuna basın.
Şekil 1’dekine benzer bir izinler diyalog kutusu karşınıza çıkacaktır. Bir nesne üzerinde izlemeyi etkinleştirme hakkında anlattığım
adımları izleyin. İzlemeyi ne genişlikte
etkinleştireceğinize dikkatli bir şekilde karar verin. İzlenecek kişileri
sınırlamayı çok önermiyorum. Çünkü saldırganlar
çoğunlukla çaldıkları ya da tahmin ettikleri parolaları kullanarak bir
başkasıymış gibi sisteme girebiliyorlar. Bu yüzden bütün kullanıcıları
izlemeye almak için Everyone grubunun seçilmesi
yerinde olacaktır. Ama hangi nesnelere ne türden erişimleri
belirlediğiniz alanda kısıtlama yapmanızı öneririm. Nesne
izleme çok fazla veri üretir. Security günlüğünde yararsız bilgi
miktarını azaltmak için az sayıda nesne üzerinde, az
sayıda işlemi izlemeye alın.
Deneyimsiz bir kişi nesne izleme olaylarına baktığında sisteminizde
çok fazla etkinlik var diye düşünebilir. Win2K’in nesneler üzerindeki asıl
işlemleri (okuma, yazma gibi) değil, uygulamaların nesneye erişim isteklerini
kaydettiğini unutmayınız. Bu yüzden 560 nolu olayın Accesses alanı bir
kullanıcının gerçekte kullandığı değil, kullanabileceği bütün yetkileri içerir.
Bu sorun kullanıcının gereksindiği erişim tipine bakmaksızın
nesneye ilişkin her türlü erişimi işletim sisteminden isteyen uygulamalar ile
birlikte daha da büyümektedir. Microsoft, bu konuda Win2K’in izleme
yapısını yapılabilecek işler temelinde değil de gerçekleşen işler temelinde
geliştirme niyetinde olduğunu açıkladı.
Yararlı İşlevler
Nesne erişimini
izlemeye alarak bir kullanıcının erişmemesi gereken verilere erişmeye çalışıp
çalışmadığını ya da bir kullanıcının bir dosyayı değiştirip değiştirmediğini
görebiliyorsunuz. Günlüğe atılan bilgilerin miktarının
epey fazla olması dışında bu kategori olay izleme alanında önemli bir yer
kaplıyor.
Tablo 1: Nesne Erişim Tipleri
Erişim Tipi Anlamı
WRITE_DAC Kullanıcı
nesnenin DACL’ini değiştirmiş olabilir. WRITE_OWNER Kullanıcı nesnenin mülkiyetni üzerine
almaya çalışmış olabilir.
READ_CONTROL Kullanıcı
nesnenin sahibini, DACL’ini ya da SACL’ini okumuş olabilir.
DELETE Kullanıcı nesneyi
silmiş ya da başka bir yere taşımış olabilir.
SYNCHRONIZE Bir uygulama nesne
üzerindeki herhangi bir işlem hakkında bilgilendirilmek istiyor.