ÇözümPark'a hoş geldiniz. Oturum Aç | Üye Ol
 
Ana Sayfa Makale Video Forum Resimler Dosyalar Etkinlik Hizmetlerimiz Biz Kimiz

Exchange Server

Exchange Server Admin Audit Log - Deep Dive

Exchange Server bir şirket ortamında çalışan nerede ise tüm beyaz yakalıların aktif olarak kullandığı bir ürün olup son kullanıcı etkileşimi yüksektir. Durum böyle olunca da bu ürün üzerindeki değişikliklerin yakından takip edilmesi gereklidir. Tabiki şirket politikaları veya kurumunuzun içinde bulunduğu sektörün uymak zorunda olduğu bir takım kurallar, kanunlar ( regülasyonlar ) gereği hali hazırda zaten Exchange Server mimarisinde “Audit” yani izleme yapıyor olabilirsiniz. Bu izlemeyi ister Exchange Server ile beraber gelen Audit özelliği ile yapabilirsiniz, isterseniz Lepide, Change Auditor ve benzeri ürünler ile takip edebilirsiniz. Ben bu makalemde varsayılan Admin ve Mailbox Audit özelliğinden bahsedeceğim.

Exchange Server 2007 SP2 ile beraber hayatımıza giren Admin Audit, yani yöneticilerin Exchange server üzerinde yaptığı değişikliklerin bir yere kayıt edilmesi ve gerekli durumlarda raporlanması özelliği şu anda en güncel sürüm olan Exchange Server 2016 ile de devam etmektedir. Sadece ilk çıktığında varsayılan olarak açık gelmeyen bu özellik, Exchange Server 2010 SP1 ve sonrası için artık varsayılan olarak açık gelen bir özelliktir ( Admin Audit Log açık olup, mailbox Audit log varsayılan olarak kapalıdır).

Audit işlemleri özel bir yetki gerektirdiği için eğer Organizasyon seviyesinde yetkiniz yok ise aşağıdaki PS yardımı ile Audit için içerisinde olmanız gereken role gruplarını görüntüleyebilirsiniz

Get-ManagementRole | Get-ManagementRoleAssignment | Where-Object {$_.Role -like “*audit*”} | FT Role,RoleAssigneeName -wrap –autosize

clip_image002

Yani amacınız görüntüleme ise “Comliance Management” üyeliği yeterli olacaktır, ancak daha fazla ayar için Organization Management grubu üyesi olmanız gereklidir.

Aslında bu bilinen bir durum yani PS i neden kullandık diye düşünebilirsiniz? Buradaki amaç kurumsal ve büyük yapılarda farklı işler için farklı role grupları oluşturulmuş olabilir ve bu nedenle Organization Management hakkı istemeden veya birisine vermeden Audit operasyonlarını yapabileceğiniz gruplar var ise onları tespit etmiş olursunuz ( teknik olarak bu grupları zaten siz açtığınız için biliyorsunuzdur, ancak sizin devraldığınız bir sistem ise bu komut çok yararlı olacaktır).

Gerekli yetkiye sahip iseniz yapılandırmayı kontrol etmek ile işe başlayabiliriz.

Aşağıdaki powershell komutu ile mevcut durumu kontrol edebilirsiniz;

Get-AdminAuditLogConfig

clip_image004

Yukarıdaki ekranda “AdminAuditLogEnabled” karşısındaki True, sizde Admin Audit loglama özelliğinin açık olduğunu gösterir.

Aslında bu izleme temel olarak Exchange Management Shell için yapılır, çünkü konsol veya web tabanlı yönetim panellerinde yaptığınız bütün işlemler aslında arka planda PS çalıştırır. Ancak Get- ve Search- ile başlayan komutlar kesinlikle takip edilmez. Çünkü Audit sisteminin temel amacı değişiklik yönetimidir. Yani kim hangi listeyi çekmiş tarzından bir bilgi alamazsınız.

Toplanan tüm bu loglar özel bir sistem posta kutusunda saklanmaktadır. Bu posta kutusuna yetkisi olan kullanıcılar Exchange Control Panel (ECP) Auditing Reports sayfası, Search-AdminAuditLog veya New-AdminAuditLogSearch PS ile erişebilir. Bu alanları kullanacak kullanıcı Exchange Server organizasyonunda Compliance Management grubu üyesi olmalıdır.

Genel olarak AdminAuditLog açma ve kapama işlemleri aşağıdaki gibidir;

Set-AdminAuditLogConfig -AdminAuditLogEnabled $False

clip_image006

Tabiki bu son hareketiniz de loglanacağını unutmayın. Tekrar açıyorum

Set-AdminAuditLogConfig -AdminAuditLogEnabled $True

Varsayılan olarak AdminAuditLog açtığınız zaman her türlü değişikliğe neden olan cmd komut seti loglanır, ancak siz örneğin grup üyeliklerinin güncellenmesi gibi sizin için çok kritik olmayan bir komut setinin loglanmasını istemeyebilirsiniz.

Set-AdminAuditLogConfig -AdminAuditLogCmdlets *
 
Yukarıdaki komut tüm komut setleri için izlemeyi açar ( Get ve Search hariç ). 
 
Set-AdminAuditLogConfig -AdminAuditLogEnabled $true -AdminAuditLogCmdlets * -AdminAuditLogParameters *
 
Veya yukarıdaki komut seti benzer şekilde tüm komut setleri ve bu komut setlerinin tüm parametreleri için admin audit log açılmasını sağlar.
Ama siz tüm komut setlerini veya tüm parametreleri açmak istemiyorsanız sizin belirlediğiniz komut setlerini ve parametrelerini izlemek isteyebilirsiniz.
Bu durumda * yerine aşağıdaki gibi farklı yazım modellerini kullanarak sınırlama yapabilirsiniz.
 
·        New-Mailbox
·        *TransportRule
·        *Management*
·        Set-Transport*

 

Örneğin bunların hepsini içerecek şekilde gerçekleştirebilirsiniz

Set-AdminAuditLogConfig -AdminAuditLogCmdlets New-Mailbox, *TransportRule,
*Management*, Set-Transport* -AdminAuditLogParameters *

 

Veya aşağıdaki gibi başka bir örnek paylaşabiliriz.

Set-AdminAuditLogConfig -AdminAuditLogEnabled $true -AdminAuditLogCmdlets *Mailbox,
*Management*, *TransportRule* -AdminAuditLogParameters *

 

Yukarıdaki her iki komut komut setleri seviyesinde sınırlama yaparken parametre seviyesinde bir sınırlama yapmaz.

Set-AdminAuditLogConfig -AdminAuditLogEnabled $true -AdminAuditLogCmdlets *Mailbox* -AdminAuditLogParameters *Address*

 

Yukarıdaki komut setinde ise parametre de sınırlandırılmıştır.

Ancak çoğu işletme varsayılan olarak tüm komut setleri ve tüm parametreleri izler çünkü ya içinde bulunduğu sektörün gereksinimi olarak audit olmalıdır ve denetlenmektedir veya şirket yöneticileri Exchange’ i yöneten sistem uzmanlarının tüm hareketlerini görmek istemektedir.

Not: Yukarıda yapılan değişiklikler, tüm Exchange sunucularında aktif olması için AD replikasyonuna bağlıdır. Bildiğiniz gibi bu tür değişiklikler AD Configuration partition bölümünde replike olur ve eğer ortamınızda farklı site’ lar var ise bu yaptığınız değişikliklerin tüm Exchange sunucularında geçerli olması belirli bir süre alabilir. Komutu çalıştırınca 60dk yazar ama bu tamamen yapınıza bağlı olarak değişiklik göstermektedir.

Diğer parametreler ise aşağıdaki gibidir;

AdminAuditLogAgeLimit: Bu komut seti ile audit loglarının ne kadar süre ile saklanacağını ayarlayabiliriz. Formatı aşağıdaki gibidir;

dd.hh:mm:ss

Yani gün, saat, dakika ve saniye cinsinden verebiliriz. Örnek bir komut;

Set-AdminAuditLogConfig -AdminAuditLogAgeLimit 913.00:00:00

Eğer bu değeri 00:00:00:00 olarak ayarlarsanız bu durumda tüm Audit logları silinecektir. Tabiki silinmeden önce bunu kimin yaptığını kayıt edecektir en son olarak.

AdminAuditLogCmdlets: Hangi komut setlerini izleyeceğinizi belirleyebileceğiniz parametredir. Bu konuda örnek komutlar paylaştım.

AdminAuditLogEnabled: Admin Audit Log özelliğini açmaya ve kapatmaya yarayan parametredir.

AdminAuditLogExcludedCmdlets: Bazı komut setlerini izlemek istemiyorsak bu parametreyi kullanabiliriz. Örnek komut aşağıdaki gibidir;

Set-AdminAuditLogConfig -AdminAuditLogEnabled $true -AdminAuditLogCmdlets * -AdminAuditLogParameters * -AdminAuditLogExcludedCmdlets *Mailbox*, *TransportRule*

Bu komut ile Admin Audit log aktif ediyoruz, tüm cmdlet ve parametrelerini takip ediyorken içerisinde Mailbox ve TransportRule geçen komut setleri ve dolayısıyla onlar ile beraber kullanılan parametreleri takip etmiyoruz. Eğer bu komutu iptal etmek istiyorsanız yani bu Exclude edilecek komutları istemiyor ve tüm komutların takip edilmesini istiyorsanız değer olarak “$null” girmeniz gereklidir.

AdminAuditLogParameters: Kullanacağımız cmdlet için yine kullanılacak ve takip edilecek parametreleri bu komut seti ile belirleyebiliyoruz. Bu konuda örnek komutlar paylaştım.

LogLevel: Varsayılan izleme bilgilerine ek olarak daha çok bilgiye ihtiyaç duymanız halinde bu komutu kullanabilirsiniz.

Varsayılan olarak CmdletName, ObjectName, Parameters (values), ve Caller, Succeeded, ve RunDate gibi bilgileri alabiliyorsunuz. Daha fazla bilgi için parametreyi None’ dan Verbose a çekebilirsiniz. Bu durumda ek olarak ModifiedProperties (eski ve yeni değerler) ve ModifiedObjectResolvedName alanlarıda gelmektedir.

TestCmdletLoggingEnabled: Test ile başlayan komutlarında loglanmasını istiyorsanız bu parametreyi kullanabilirsiniz.

Set-AdminAuditLogConfig -TestCmdletLoggingEnabled $True

 

Peki, varsayılan olarak aktif olan bu özellik bu güne kadar sizin sisteminizde ne kadar disk alanı kapladı? Bu sorunun cevabı için ilgili özel sistem posta kutusu içerisindeki AdminAuditLog klasörünün boyutunun kontrol edebilirsiniz

Get-MailboxFolderstatistics "SystemMailbox{e0dc1c29-89c3-4034-b678-e6c29d823ed9}" -FolderScope RecoverableItems –IncludeAnalysis >c:\hakanuzuner.txt

Hakanuzuner.txt içerisinde arayacağınız bölüm aşağıdaki gibidir, misal bende sadece 5MB lık bir kayıt var ancak bu ÇözümPark mail sunucusu olduğu için çok fazla admin hareketi olmadığı için çok fazla log yok.

 

clip_image008

 

Buraya kadar temel olarak Admin Audit logları için yapılandırma ayarlarının kontrol edilmesi ve şirket ihtiyaçlarına göre ayarlanmasını gördük. Bu yapılan değişikliklerin raporlanması için birkaç seçeneğim mevcuttur.

En kolay yöntem EAC üzerinden raporlara erişmektir.

EAC > Compliance management > Auditing

clip_image010

View the Administrator audit log linkine tıklayın, bir tarih aralığı verin ve aramayı başlatın

clip_image011

Sonuç yukarıda olduğu gibi admin log özelliğini “Administrator” isimli kullanıcının kapadığını rahatlıkla görebilirsiniz.( örnek olarak)

Hemen yine bu ekranda Management Role Group için yapılan değişikliklerin de raporunu alabileceğiniz bir ekran yer almaktadır.

clip_image012

Eğer yönetici, role gruplarda bir değişiklik yapar ise bunu da bu ekrandan rahatlıkla görebilirsiniz. Aslında bu da Admin Audit Log içerisindeki bir veri olmasına karşın Exchange Server yönetiminde Role Group mimarisi çok önemli olduğu için ona ayrı bir rapor ekranı sunulmuştur.

clip_image014

 

Eğer Admin hareketlerini EAC üzerinden çekmek yerine PS ile çekmek isterseniz aşağıdaki gibi bir komut seti kullanabilirsiniz;

Search-AdminAuditLog -Cmdlets New-RoleGroup, New-ManagementRoleAssignment

Yukarıdaki komut ile adminlerin “New-RoleGroup” veya “New-ManagementRoleAssignment” komutlarını kullandıkları hareketlerin dökümünü görebilirsiniz.

Daha detaylı arama yapmak için örnek bir komut aşağıdaki gibidir;

Cmdlets   Set-Mailbox

Parameters   UseDatabaseQuotaDefaults, ProhibitSendReceiveQuota, ProhibitSendQuota

StartDate   01/24/2012

EndDate   02/12/2012

The command completed successfully

Search-AdminAuditLog -Cmdlets Set-Mailbox -Parameters UseDatabaseQuotaDefaults, ProhibitSendReceiveQuota, ProhibitSendQuota -StartDate 01/24/2012 -EndDate 02/12/2012 -IsSuccess $true

Kullanılan komut seti, parametreleri, tarih aralığı ve sonuç yani başarılı mı yoksa başarısız mı durumuna göre yukarıdaki gibi örnek bir komut ile Admin Audit Logların da arama yapabilirsiniz.

Yukarıdaki aramayı benzer şekilde New-AdminAuditLogSearch komutu ile aşağıdaki gibi yapabiliriz;

Cmdlets   Set-Mailbox

Parameters   UseDatabaseQuotaDefaults, ProhibitSendReceiveQuota, ProhibitSendQuota

StartDate   01/24/2012

EndDate   02/12/2012

New-AdminAuditLogSearch -Name "Mailbox Quota Change Audit" -Cmdlets Set-Mailbox -Parameters UseDatabaseQuotaDefaults, ProhibitSendReceiveQuota, ProhibitSendQuota -StartDate 01/24/2012 -EndDate 02/12/2012 -StatusMailRecipients hakan@cozumpark.com, hakan@mayasoft.com.tr

 

İki komut arasında fark, ilk komut görüntüleme içindir, ikinci komut ise sonucu rapor olarak iletmek yani bir nevi export etmek içindir.  Bu komutu çalıştırmak için minimum “View-only administrator audit Logging” yetkisine sahip bir kullanıcı olmanız gereklidir. Komut raporu 24 saat içerisinde size toplam dosya boyutu maksimum 10mb olacak şekilde ulaştıracaktır. Dosya formatı XML olduğu ve varsayılan olarak OWA da bu format yasaklı olduğu için önerim outlook üzerinden almanızdır. Eğer illaki OWA dan bakmanız gerekiyor ise bu durumda geçici olarak izin vermeniz gereklidir.

Örnek Komut

Set-OwaMailboxPolicy -Identity OwaMailboxPolicy-Default –AllowedFileTypes '.xml'

 

 

Mevcut logları export edip incelemek isterseniz powershell yerine yine EAC üzerinden bu işlemi kolaylıkla yapabilirsiniz.

clip_image016

 

Ben 28 Ocak günü 8.55 de çalıştırdığım bu raporu ertesi gün 06:07 de aldım. Yani yaklaşık 21 saat sonra.

clip_image018

Dosya içeriği ise aşağıdaki gibidir;

clip_image020

 

Bunu daha anlamlı bir rapor haline getirmek için size gelen ekteki XML dosyasını aşağıdaki gibi bir dizine kayıt edin

C:\rapor

Daha sonra PS açarak aşağıdaki komutları yazınız

[xml]$xml = Get-Content C:\rapor\SearchResult.xml

$xml

clip_image022

$xml.SearchResults

clip_image024

$xml.SearchResults.Event

clip_image026

Gördüğünüz gibi olaylar şimdi anlamlı bir şekilde listelendi. Tabiki çok fazla komut var, bunun arasından isterseniz filtreleme yapabiliriz

$xml.SearchResults.Event | select caller, cmdlet

clip_image027

Veya daha detaylı olarak listeleyebilirim

$xml.SearchResults.Event | Format-Table rundate, caller, cmdlet –AutoSize

clip_image029

Burada gördüğünüz gibi tarih, kullanıcı bilgisi ve kullandığı komut seti yer alıyor.

Bu XML içerisindeki son event’ e bakmak isterseniz, yani en son admin hareketi ne zaman yapıldı

$xml.SearchResults.Event[0].rundate

clip_image031

Not: Tabiki bu rapor 24 saat içerisinde hazırlandığı için böyle bir bilgiyi güncel olarak sistemde EAC üzerinden veya PS ile almanızı tavsiye ederim.

Son olarak daha detaylı arama, listeleme yapmak istiyorsanız GridView parametresini kullanabiliriz.

$xml.SearchResults.Event | select caller, rundate, cmdlet | Out-GridView

 

clip_image033

Exchange Server bu logları varsayılan olarak gelen bir agent sayesinde gerçekleştirir. Bu Built-in agent Admin Audit Config bilgisini okuyarak neleri kayıt edeceğine karar verir ve bunları saklar. Aşağıda gördüğünüz gibi Audit Agent varsayılan olarak yüklü ve aktif bir system ajanıdır.

clip_image035

Bu bölüme kadar Exchange Server ile beraber gelen özellikleri anlatmaya çalıştım, bundan sonra ise Admin Audit Loglarının düzenli olarak size HTML rapor olarak gönderilmesinin nasıl gerçekleştirileceğini göstereceğim.

Kaynak

https://technet.microsoft.com/en-us/library/dd298169%28v=exchg.160%29.aspx

https://technet.microsoft.com/en-us/library/ff459250%28v=exchg.160%29.aspx

http://www.shudnow.net/2010/08/03/changes-in-exchange-2010-sp1-administrator-audit-logging/

http://blogs.technet.com/b/heyscriptingguy/archive/2012/01/26/use-powershell-to-parse-xml-exchange-audit-results.aspx

 

Tarih : 22 Mayıs 2016 Pazar 21:37 Yayınlayan: Hakan UZUNER

Yorumlar

 

Rıza ŞAHAN

Elinize sağlık hocam.

Mayıs 23, 2016 22:29
 

Kürşat ARI

elinize sağlık

Ocak 24, 2017 10:59
Kimliksiz yorumlar seçilemez kılınmış durumdadır.

Yazar: Hakan UZUNER

Eğitimlerim

HakanUzuner.com

Bu Kategori

Hızlı aktarma

Etiketler