Başta bu konuya en çok ilgi duyan Exchange Server adminleri olmak üzere herkese merhaba.
Exchange adminlerine öncelik veriyorum, çünkü bu konu en çok onları ilgilendiriyor.
KB5000871 nedir, bu güvenlik açığı da nereden çıktı diye merak edenler için önce bu konuyla ilgili Microsoft, Exchange Server için aynı anda 7 güvenlik açığı duyurdu isimli makalemizin linkini de vereyim.
Gelelim bu açığı nasıl kapatacağımıza.
Öncelikle kullandığınız Exchange Sürümüne uygun linki kullanarak aşağıdan ilgili yamayı indirmelisiniz. İndirdiğiniz bu yama Microsoft tarafından duyurulan 4 ü kritik, 3 ü önemli olmak üzere 7 güvenlik açığını tek seferde kapatabilmenizi sağlayacak.
Eğer Exchange sunucunuzun CU sürümü güncel son 2 versiyondan birisi değilse yamayı uygulamadan önce en son Cumulative Update (CU) versiyonunu indirip Exchange Sunucularınızı en yeni sürüme yükseltmelisiniz.
Ben, bir eski versiyon bile olsa, bu işlemi yapmanızı öneririm.
Ancak ilgilenmiyorsanız yazının alt kısmında doğrudan KB5000871’in yüklenmesi bölümüne geçebilirsiniz.
CVE-2021-26412 Microsoft Exchange Server Remote Code Execution Vulnerability
CVE-2021-27078 Microsoft Exchange Server Remote Code Execution Vulnerability
CVE-2021-26854 Microsoft Exchange Server Remote Code Execution Vulnerability
CVE-2021-26855 Microsoft Exchange Server Remote Code Execution Vulnerability
CVE-2021-27065 Microsoft Exchange Server Remote Code Execution Vulnerability
CVE-2021-26857 Microsoft Exchange Server Remote Code Execution Vulnerability
CVE-2021-26858 Microsoft Exchange Server Remote Code Execution Vulnerability
Ben burada hem müşterilerimiz tarafında, hem de Türkiye genelinde Exchange 2016 ‘nın daha yoğun şekilde kullanıldığını bildiğim için size makaleyi Exchange 2016 üzerinde hazırladım. Ancak diğerlerinde de durum değişmiyor.
Öncelikle Exchange 2016 güncel versiyon olan Cumulative Update 19 a yükseltme işlemi yapacağım.
Bunun için Microsoft Volume Licensing Service Center adresine giderek login oluyor ve Exchange 2016 CU 19 ISO dosyasını indiriyorum.
Bunun yerine alternatif olarak https://docs.microsoft.com/en-us/exchange/new-features/build-numbers-and-release-dates?view=exchserver-2016 linkinde ilgili CU üzerine tıklayarak herhangi bir yere login olmadan da indirebilirsiniz.
Ben, indirdiğim dosyayı, güncelleyeceğim bütün Exchange sunucularda sistem diski olmayan en boş disk üzernde Original isimli bir klasör açıp önce oraya atıyorum. Bu örnekte de en boş disk olan L üzerinde Original isimli bir klasör açıp hem CU19 ISO dosyasını, hem de Exchange2016-KB5000871-x64-en.msp dosyasını L:\Original\ altına kopyaladım.
Bu arada bir not eklemek istiyorum, eğer Exchange sunucularınızın kurulu olduğu İşletim Sistemi güncel değilse bu işlemler öncesinde Windows Updatelerini geçmenizi mutlaka öneriyorum.
İşlem sırasında sorun yaşamamak için CU19 yükleme işleminden önce, işlem yapacağınız sunucunun Failover Cluster Manager üzerindeki Primary Node olmadığından emin olmanızı öneririm.
Bunun için Failover Cluster Manager’a girip kontrol edin. Primary Node olan sunucuda en son işlem yapın. Primary Node olan sunucuda işlem yapacağınız zaman, işlem yapmadan önce DAG üzerinde sağ click yapın ve More Actions / Move Core Cluster Resource / Select Node bölümünden farklı bir sunucuyu Primary Node olarak belirleyin.
Yine CU19 u yüklemeden önce yükleme yapacağınız sunucu üzerinde Active Database olmamasını öneririm.
Bir Databasei farklı bir sunucu üzerinde Actif hale getirmek için ECP de Server / Database bölümüne gelin ve Databasei seçip sağ kısımda o databasein kopyalarının olduğu sunuculardan birisinde Activate linkine tıklayın.
Bunları yapmasanız da normalde sorun çıkmasını beklemiyoruz, ancak yaparsanız işinizi bir miktar daha garantiye almış, sorun çıkma olasılığını en aza indirmiş olursunuz.
Yine KB5000871 güncellemesini yüklerken, eğer msp dosyasını çift tıklayarak yüklemeyi denerseniz bazı dosyalar doğru şekilde güncellenmeyebilir. Sorun, güncelleştirmenin Exchange servislerini doğru şekilde durduramaması nedeniyle oluşur.
Böyle bir durumda herhangi bir hata almazsınız ancak OWA ve ECP erişimlerinde sorun yaşarsınız.
Bu sorunu yaşamamak için güncellemeyi manuel olarak yüklemenizi öneririm.
Exchange Server CU19 yükleyebilmek için ön koşullar
Sunucu üzerinde Microsoft .Net Framework 4.8 in yüklü olması gerekiyor.
Eğer yüklü değilse https://dotnet.microsoft.com/download/dotnet-framework adresine giderek download etmeniz ve yüklemeniz gerekir.
Bir başka ön koşul ise Remote Server Administration Tool – Active Directory Domain Service (RSAT-ADDS) in yüklü olması. Bunun normalde yüklü olduğunu varsayıyorum ama yine de gerekirse Powershell i Administrator olarak açıp
Install-WindowsFeature RSAT-ADDS
komutuyla yükleyebilirsiniz.
Son olarak, bu işlemleri yapacağınız kullanıcının Scheme Admins ve Enterprise Admins gruplarına üye olması gerektiğini söyleyerek devam edelim.
Exchange Server CU19 u yüklemeye başlamadan önce bilmeniz gereken diğer konular
Exchange Server’ınızı güncellemeden önce, eğer tek bir sunucunuz varsa mail trafiğinin kesintiye uğrayacağını unutmayın.
Upgrade ve yama geçişleri öncesi mutlaka bu iş için ihtiyacınız olacak bilgi ve araçları elinizin altında bulundurun ve bu işlemin zaman alacağını unutmayın.
Exchange kurumsal bir elektronik posta platformudur. Birden çok sunucunuz olduğu durumlarda bile kısa süreli kesintiler yaşanacaktır. Kullanıcılarınızı çalışma hakkında bilgilendirin ve bu kesintilerin planlı bir çalışma nedeniyle olduğunu önceden bildirin.
Bir CU upgrade işlemi yaptıktan sonra eski versiyona dönemeyeceğinizi unutmayın. Eğer yüklemeyi kaldırırsanız, o sunucudan Exchange Server’ı kaldırmış olursunuz. Upgrade işlemi tek yönlü bir işlemdir, geri alınamaz.
Başlamadan önce
- Windows Updateleri kontrol edip yüklemeyi unutmayın
- Antivirüs yazılımını geçici olarak disable edin
- Backup yazılımını geçici olarak disable edin
- Sunucuyu monitör ettiğiniz sistemler varsa, monitoring yazılımında sunucuyu geçici olarak izlemeyi durdurun
- Load Balancer kullanıyorsanız, Hangi Exchange sunucuda işlem yapacaksanız o sunucuyu offline a çekmeniz iyi olacaktır. Çoğu Load Balancer bunu otomatik olarak algılar ama önlem almak iyidir.
Başlıyoruz
Exchange Server 2016 yı Upgrade etmek için GUI kullanabilir veya Command Prompt üzerinden (Unattended Mode) işlemi gerçekleştirebiliriz.
Ben burada çok sayıda sunucuyu upgrade edeceğim için her iki seçeneği de size göstermeye çalışacağım.
İşlemlere başlamadan önce üzerinde işlem yapacağımız Exchange Sunucuyu Maintenance (Bakım) moduna alıyoruz.
Bunun için işlem Exchange Management Shell i administrator olarak çalıştırın ve ardından aşağıdaki komutu girin.
Exchange Serverlarımızın ismini burada Exchange1, Exchange2, Exchange3 ve Exchange4 olarak kullanıyorum ve işlemi Exchange1 üzerinde yaptığımı varsayıyorum.
Maintenance modeun ilk adımı için aşağıdaki komutu çalıştırıyoruz
Set-ServerComponentState -Identity "Exchange1" -Component HubTransport -State Draining -Requester Maintenance
Bu işlemi yaptığınızda artık sunucumuzdaki Hub Transport servisi mesaj kabul etmeyecektir.
Kuyruktaki mesajları, bir diğer Exchange sunucusuna yönlendirin. Yönlendireceğiniz sunucunun ismini yazarken FQDN olarak yazmalısınız ve sunucunun Maintenance modeda olmadığına emin olmalısınız.
Bu işlem için Exchange Management Shell içerisinde aşağıdaki komutu kullanın (Sunucu isimlerini kendi sunucularınızın isimleri ile değiştirmeyi unutmayn)
Redirect-Message -Server "Exchange1" -Target "Exchange2.sistemyoneticisi.com"
Şimdi sunucumuzu DAG üzerinde suspend edeceğiz. Bunun için aşağıdaki komutu yazın
Suspend-ClusterNode "Exchange1"
Yukarıda, database aktif kopyalarının sorun yaşanmaması için farklı bir sunucu üzerinde aktif edilmesini önermiştim. Bunun için aşağıdaki komutu da kullanabilirsiniz. Aşağıdaki komut ayrıca kopyaların bu sunucu üzerinde otomatik olarak aktif hale gelmesinin de önüne geçer ve bu sunucudaki aktif veritabanı kopyalarını diğer DAG üyesi sunuculara taşır. Ancak bu komuttan önce DatabaseCopyAutoActivationPolicy değerini alıp bir yere not edeceğiz. İşlemler bittiğinde bu değeri eski haline getirmemiz gerekiyor. Bunun için önce
Get-MailboxServer "Exchange1" | Select DatabaseCopyAutoActivationPolicy
komutunu çalıştırıp sonucu not alalım. Varsayılan değer “unrestricted” tir.
Sonrasında da veritabanlarından birisinin otomatik olarak aktif hale gelmesini önlemek için bu değeri Blocked olarak ayarlıyoruz.
Set-MailboxServer "Exchange1" -DatabaseCopyAutoActivationPolicy Blocked
Sonrasında aşağıdaki komutu çalıştırabiliriz. Komutu çalıştırdığınızda işlem birkaç dakika sürecektir.
Set-MailboxServer "Exchange1" -DatabaseCopyActivationDisabledAndMoveNow $true
Sunucuda mounted durumda olan veritabanı dosyalarını kontrol etmek için aşağıdaki komutu kullanabilirsiniz. Bu komut hiç bir sonuç vermemelidir. Eğer sonuç görüyorsanız işlem henüz tamamlanmamş demektir. Uzun süre sonra halen sonuç görüyorsanız ECP üzerinden databaseleri başka bir sunucuda makalenin başlarında belirttiğim şekilde aktif hale getirin.
Get-MailboxDatabaseCopyStatus -Server "Exchange1" | Where {$_.Status -eq "Mounted"}
Aktif veritabanları taşındıktan sonra kuyruğu kontrol etmemiz gerekiyor. Eğer kuyrukta mail varsa, sunucu maintenance modedan çıkana kadar mail trafiğinde aksama olabilir.
Bunun için
Get-Queue
komutunu kullanıyoruz.
Kuyruğun boş olduğunu gördükten sonra Exchange1 sunucusunu bakım moduna alma işlemini tamamlıyoruz.
Set-ServerComponentState "Exchange1" -Component ServerWideOffline -State Inactive -Requester Maintenance
Exchange sunucusunun maintenance modeda olduğunu kontrol etmek için aşağıdaki komutu çalıştırın
Get-ServerComponentState "Exchange1" | Select Component, State
Monitoring ve RecoveryActionsEnabled dışındaki tüm komponentlerin inactive olması gerekiyor.
Buraya kadar herşey yolundaysa CU19 ISO dosyamızı mount ediyoruz ve CMD yi Run as Admin ile açıyoruz, Önce Exchange ISO yu mount ettiğimiz CD sürücüye geçiyoruz ve aşağıdaki komutu yazarak unattended olarak işlemi başlatıyoruz.
Setup.exe /IAcceptExchangeServerLicenseTerms /Mode:Upgrade
Yukarıdaki komutu çalıştırdığınızda, Eğer Exchange Management Shell açıksa ya da bir powershell processi çalışıyorsa hata alırsınız. Böyle bir durumda bunları kapatmanız veya Task Manager Processes içerisinden End Task diyerek sonlandırmanız gerekecektir.
Eğer servislerin kapatılması ile ilgili hata alırsanız, Microsoft Exchange Active Directory Topology servisini stop edin (Bu servisi kapattığınızda bağlı Exchange Servislerinin tümü kapatılacaktır) ve eğer varsa çalışan diğer Exchange servislerini de stop ederek yeniden deneyin.
Yine hata alırsanız sunucuyu restart edin ve CMD yi yine Run as Admin olarak açarak komutu yeniden çalıştırın. Özellikle öncesinde Windows Updateleri yaptıysanız sunucuyu bir defa restart etmek yeterli olamayabilir.
Not : Hata aldığınızda, mesajlar size sorunun ne olduğu ile ilgili ayrıntılı bilgi verecektir. Okumadan geçmeyin. Eğer aldığınız hatayı buradaki bilgilerle ya da kendi tecrübenizle çözemiyorsanız araştırın ve sebebini bulmaya çalışın.
Bu işlem bittiğinde Exchange Server 2016 CU19 geçişimizi tamamlamış oluyoruz. İlk yapmamız gereken şey sunucuyu restart etmek.
Restart sonrası sunucumuzu Maintenance Modedan çıkartmamız gerekiyor.
Aşağıdaki komutları sırayla çalıştırın.
Set-ServerComponentState "Exchange1" -Component ServerWideOffline -State Active -Requester Maintenance
Resume-ClusterNode -Name "Exchange1"
Set-ServerComponentState -Identity Exchange1 -Requester Maintenance -Component HubTransport -State Active
Yukarıdaki komutlar, sunucumuzu maintenance modea almak için yaptığımız işlemleri geri almamızı sağlayacaktır. Buraya kadar geldiğinize göre artık tek tek açıklamaya gerek olmadığını düşünüyorum.
Aşağıdkai komutu kullanarak DatabaseCopyAutoActivationPolicy değerimizi de başlangıçtaki haline getiriyoruz. Hatırlarsanız kontrol edip bu değeri not almıştık. Siz aldığınız nota göre değeri Unrestricted yerine yazabilirsiniz.
Set-MailboxServer "Exchange1" -DatabaseCopyAutoActivationPolicy Unrestricted
Yukarıda kullandığımız bir komutla, databaselerin aktif kopyalarını DAG üyesi diğer sunuculara dağıtmıştık. Şimdi onları preferred serverlar üzerine almamız gerekecek. Bu aşamada isterseniz hiç birşey yapmadan bekleyebilirsiniz, databaseler preferred serverlar üzerinde yavaş yavaş aktif hale gelecektir. İsterseniz ECP üzerinden databaseleri manuel olması gereken sunucularda aktif hale getirebilirsiniz, ya da bunun için Microsoft’un sağladığı RedistributeActiveDatabases.ps1 scriptini kullanabilirsiniz.
Exchange Management Shell içerisinde aşağıdaki komutu yazarak scripts klasörüne ulaşın.
cd $exscripts
yukarıdaki komutu sizi C:\Program Files\Microsoft\Exchange Server\V15\scripts> lokasyonuna atar.
Kullanmanız gereken komut ağaşıdaki gibidir.
.\RedistributeActiveDatabases.ps1 -DagName "SIZINDAGADINIZ" -BalanceDbsByActivationPreference
Bu işlemler bittiğinde başlangıçta kapattığınız Antivirüs, Backup, Monitoring ve Load Balancer ayarlarınızı eski haline almayı unutmayın.
Şimdi artık kontrol etme zamanı.
Aşağıdaki komutlar sunucunuzu kontrol etmek için kullanabileceğiniz komutların bazıları
Get-ClusterNode
Get-ExchangeServer | Test-ServiceHealth
Get-ExchangeServer | Test-MAPIConnectivity
Get-MailboxDatabaseCopyStatus
Test-ReplicationHealth -Server "Exchange1"
Tüm sunucularda Replication Health kontrolü için
Get-DatabaseAvailabilityGroup | Select -ExpandProperty:Servers | Test-ReplicationHealth | Sort Name
Sunuuclardaki Database Activation Policy durumunu görmek için
Get-MailboxServer | Select Name, DatabaseCopyAutoActivationPolicy
Sunucunuzun versiyon bilgisini almak için aşağıdaki komutu kullanabilirsiniz.
Get-ExchangeServer | Format-List Name,Edition,AdminDisplayVersion
Versiyon bilgisini kontrol etmek için aşağıdaki linki kullanabilirsiniz.
Cumulative Update 19 geçişini unattended olarak gerçekleştirdik ve kontroller için işinize yarayacak bazı komutlara da yukarıda yer verdik. Bundan sonra sunucunuzda herşeyin çalıştığını kontrol etmelisiniz. Burada daha fazla ayrıntıya girmeyeceğim.
Şimdi aynı kurulumu bir de GUI ile yapalım.
CU19 geçişine başlamadan önce tıpkı unattended modeda yaptığımız gibi öncesinde ve sonrasında yapılacak işlemleri gerçekleştirmeniz gerekecek. Tekrar olmaması için o kısımları burada yazmıyorum.
CMD yi Run as Admin olarak açın ve ISO yu mount ettiğiniz drive içerisine girip setup.exe yi çalıştırın.
Setup Progress başladığında hata alırsanız yukarıda unattended kurulum adımlarındaki açıklamalara göz atın. Genellikle hatanın nedeni ve nasıl giderilebileceği hatayı aldığınız ekranda yer alır. Ancak istisnai durumlarda yukarıdaki açıklamalar işinize yarayabilir.
CU19 Upgrade işlemimizi GUI aracılığı ile de tamamlamış olduk.
Önce sunucuyu restart etmemiz, ardından da tüm kontrolleri gerçekleştirmemiz gerekiyor. Kontrollerle ilgili unattended yüklemeyi anlattığım bölümde bir miktar bilgi vermiştim.
Bu upgrade işlemi sonrasında yapılması gereken kontrollerden birisi de Exchange ile birlikte çalışan diğer uygulamalar. Örneğin Mail Arşivleme yapıyorsanız, arşivlemenin doğru çalıştığını da kontrol etmek gerekiyor. Ortamınızda bulunan diğer uygulamaları ve Exchange ile olan bağlantılarını mutlaka gözden geçirmenizi öneririm.
KB5000871 Güvenlik Güncelleştirmesini yüklemeye başlıyoruz.
Yazımızın başlığı bu güvenlik güncelleştirmesini kurmakla ilgiliydi ama işin bu kısmına ancak gelebildim.
Başlamadan hemen belirteyim ki, bu yamayı yüklediğinizde sunucuyu restart etmeniz gerekecek. Bu nedenle yaşanacak servis kesintisini minimize etmek ve beklenmedik bir sorunla karşılaşmamak adına yukarıda ayrıntılı şekilde yazmaya çalıştığım CU19 geçişi öncesi ve sonrası yapılan işlemleri burada da yapmalısınız. Şimdi devam ediyorum.
CMD yi Run as Admin olarak çalıştırın, Exchange2016-KB5000871-x64-en.msp dosyasının olduğu klasöre geçin ve dosyayı çalıştırın. Neden dosyaya çift tıklayarak çalıştırmadığımızı yukarıda açıklamıştım.
Diskte ihtiyacı olan alanı hesaplaması biraz zaman alabiliyor, o arada kendinize bir kahve alabilirsiniz 🙂
Bu işlemi başlarken de yapmıştı ama …
Evet arkadaşlar, nihayet bitti.
Gördüğünüz gibi, hem Exchange upgrade işlemini gerçekleştirmekte, hem de Microsoft tarafından duyurulan 7 açığı kapatma işleminde çok zorlayıcı bir taraf yok. Sadece dikkat edilmesi gereken noktalar var.
Bir de çok zaman alıyor.
Bu makalenin işinize yarayacağını umuyorum. Henüz bu işlemleri gerçekleştirmemiş arkadaşlara kolay gelsin.
Leave A Comment?
You must be logged in to post a comment.