Murat Delibal

Bir delinin bilişim günlüğü


HAFNIUM Exchange 0-Day Security Update / 2013-2016-2019 CU yükleme Adımları

Bildiğiniz bir kaç gün önce Exchange sunucularda önemli bir güvenlik açığı tespit edildi. Bu açığın giderilmesi için Microsoft tarafından güvenlik yaması yayınlandı. Bu güvenlik update’ini yapabilmemiz için kullanmış olduğumuz Exchange sunucuların Cumlative Update seviyesinde en yüksek seviyelerde olması gerekmektedir.

Aşağıda bulunan listede güvenlik paketi ile birlikte kapatılacak olan zafiyetlerin linkleri ve bu linklerin içerisinde Security Update paketini indirebileceğiniz bağlantı bulunmaktadır.

March 2, 2021 Security Update Release – Release Notes – Security Update Guide – Microsoft
CVE-2021-26412
CVE-2021-26854
CVE-2021-26855
CVE-2021-26857
CVE-2021-26858
CVE-2021-27065
CVE-2021-27078

Güncel Seviyede CU olan Exchange sunucularda problem yaşamadan bu güvenlik paketini yükleyebiliriz.

Bu yazımda güncel olmayan Exchange Sunucular üzerinde CU yükleme işlemerini anlatmaya çalışacağım.

Adım 1 Yedek

Exchange ve Domain Controller sunucuların full backup’ını almanız yaşayacağınız problemlerde geri dönüşleriniz için gerekli olacaktır.

Adım 2 Windows Update

Exchange sunucuların çalıştığı Windows işletim sistemlerinin Windows updatelerinin güncel ve yüklenmiş olduğunun emin olmamız gerekmektedir.

Adım 3 .Net kontrol

Yüklemek istediğiniz Cumlative Update hangi versiyon .Net gereksinimine ihtiyaç duymaktadır bunun kontrolünü sağlamamız gerekmekte.

Sunucular üzerinde çalışan .net versiyonu öğrenmek için aşağıdaki komutu kullanabilirsiniz.

dir /b /ad /o-n %systemroot%\Microsoft.NET\Framework\v?.*

Aşağıda bulunan tablolarda Exchange Server versiyonlarının CU update .net support listesini görebilirsiniz.

Exchange 2019

EXCHANGE 2019
.NET Framework versionCU8 to CU4CU3, CU2CU1, RTM
4.8SupportedSupportedNot supported
4.7.2Not supportedSupportedSupported

Exchange 2016

EXCHANGE 2016
.NET Framework versionCU19 to CU15CU14, CU13CU12, CU11CU10CU9, CU8CU7, CU6, CU5CU4, CU3CU2CU1, RTM
4.8SupportedSupportedNot supportedNot supportedNot supportedNot supportedNot supportedNot supportedNot supported
4.7.2Not supportedSupportedSupportedNot supportedNot supportedNot supportedNot supportedNot supportedNot supported
4.7.1Not supportedNot supportedSupportedSupportedSupportedNot supportedNot supportedNot supportedNot supported
4.6.2Not supportedNot supportedNot supportedNot supportedSupportedSupportedSupportedNot supportedNot supported
4.6.1*Not supportedNot supportedNot supportedNot supportedNot supportedNot supportedSupportedSupportedNot supported
4.5.2Not supportedNot supportedNot supportedNot supportedNot supportedNot supportedSupportedSupportedSupported

Exchange 2013

EXCHANGE 2013
.NET Framework versionCU23CU21, CU22CU19, CU20CU16, CU17, CU18CU15CU13, CU14CU12 to SP1CU3 to RTM
4.8SupportedNot supportedNot supportedNot supportedNot supportedNot supportedNot supportedNot supported
4.7.2SupportedSupportedNot supportedNot supportedNot supportedNot supportedNot supportedNot supported
4.7.1Not supportedSupportedSupportedNot supportedNot supportedNot supportedNot supportedNot supported
4.6.2Not supportedNot supportedSupportedSupportedSupportedNot supportedNot supportedNot supported
4.6.1*Not supportedNot supportedNot supportedNot supportedSupportedSupportedNot supportedNot supported
4.5.2Not supportedNot supportedNot supportedNot supportedSupportedSupportedSupportedNot supported
4.5.1Not supportedNot supportedNot supportedNot supportedSupportedSupportedSupportedNot supported
4.5Not supportedNot supportedNot supportedNot supportedNot supportedSupportedSupportedSupported

Adım 4 Active Directory Prep

Komut satırından yüklemek için indirdiğimiz CU dosyasının dizinine gidiyoruz ve aşağıdaki komutları sırası ile giriyoruz.

Setup.exe /IAcceptExchangeServerLicenseTerms /PrepareSchema

Setup.exe /IAcceptExchangeServerLicenseTerms /PrepareAD

Setup.exe /IAcceptExchangeServerLicenseTerms /PrepareAllDomains

Bu komutları çalıştıracak kullanıcının Enterprise Admin ve Schema Admin gruplarına üye olması gerekmektedir.

Hazırlık işlemlerinin başarılı şekilde tamamlandığının sağlamasını aşağıdaki komutlar ile sağlayabiliriz.

Komut setini PowerShell ISE üzerinde çalıştırmanız daha iyi olacaktır.

# Exchange Schema Version$sc = (Get-ADRootDSE).SchemaNamingContext$ob = “CN=ms-Exch-Schema-Version-Pt,” + $scWrite-Output “RangeUpper: $((Get-ADObject $ob -pr rangeUpper).rangeUpper)”# Exchange Object Version (domain)$dc = (Get-ADRootDSE).DefaultNamingContext$ob = “CN=Microsoft Exchange System Objects,” + $dcWrite-Output “ObjectVersion (Default): $((Get-ADObject $ob -pr objectVersion).objectVersion)”# Exchange Object Version (forest)$cc = (Get-ADRootDSE).ConfigurationNamingContext$fl = “(objectClass=msExchOrganizationContainer)”Write-Output “ObjectVersion (Configuration): $((Get-ADObject -LDAPFilter $fl -SearchBase $cc -pr objectVersion).objectVersion)”

Powershell üzerinde komutu çalıştırdığımızda Rangeupper,ObjectVersion(default) ve ObjectVersion(Configuration) değelerini verecektir. Bu değerlerin CU seviyelerine göre karşılıkları mevcuttur. Exchange 2016 için değer örnekleri aşağıdaki gibidir.

Exchange 2016 Active Directory versions
Exchange 2016 versionrangeUpperobjectVersion (Default)objectVersion (Configuration)
Exchange 2016 CU19153331323916219
Exchange 2016 CU18153321323816218
Exchange 2016 CU17153321323716217
Exchange 2016 CU16153321323716217
Exchange 2016 CU15153321323716217
Exchange 2016 CU14153321323716217
Exchange 2016 CU13153321323716217
Exchange 2016 CU12153321323616215
Exchange 2016 CU11153321323616214
Exchange 2016 CU10153321323616213
Exchange 2016 CU9153321323616213
Exchange 2016 CU8153321323616213
Exchange 2016 CU7153321323616213
Exchange 2016 CU6153301323616213
Exchange 2016 CU5153261323616213
Exchange 2016 CU4153261323616213
Exchange 2016 CU3153261323616212
Exchange 2016 CU2153251323616212
Exchange 2016 CU1153231323616211
Exchange 2016 RTM153171323616210
Exchange 2016 Preview153171323616041

Adım 5 Exchange Maintenance

Client Access görevi gören exc01 için HubTransport rolünü Draining mode’a alıyoruz.

Set-ServerComponentState -identity exc01 -Component HubTransport -State Draining -Requester Maintenance

Que üzerinde bulunan mailleri exc01 üzerinden exc02 üzerine yönlendiriyoruz.

Redirect-Message -Server exc01 -Target exc02

DAG üzerinde exc01’i askıya alıyoruz.

Suspend-ClusterNode exc01

DAG üzerinde bulunan aktif databaseleri exc02 üzerine taşıması ve DAG kopyalama işlemlerini devre dışı bırakıyoruz.

Set-MailboxServer exc01 -DatabaseCopyActivationDisabledAndMoveNow $true

DAG üzerinde bulunan Databaselerin exc01 üzerinde aktif olmaması için aşağıdaki komutu giriyoruz.

Set-MailboxServer exc01 -DatabaseCopyAutoActivationPolicy Blocked

DAG taşıma işlemlerinin bitmesini bekliyoruz. Taşıma işlemlerini kontrol etmek için aşağıdaki komutu girebilirsiniz.

Get-MailboxDatabaseCopyStatus -Server exc01 | Where{$_.Status -eq “Mounted”}

DAG database taşıma işlemleri bittikten sonra aşağıdaki komut ile exc01’i bakım moduna alıyoruz.

Set-ServerComponentState exc01 -Component ServerWideOffline -State Inactive -Requester Maintenance

exc01’in bakım moduna girip girmediğini aşağıdaki komut ile teyit edebiliriz.

Get-ServerComponentState exc01| Format-Table Component, State

Adım 6 Yüklemeler

.Net güncellememiz gerekiyor ise ilgili .net yüklenmelidir.

Cumlative update’i iki farklı şekilde başlatabiliriz.

Komut satırı ;

Komut satırını açıp CU klasörüne girerek aşağıdaki komutu ile CU yükleme işlemini başlatabiliriz.

Setup /m:upgrade /IAcceptExchangeServerLicenseTerms

GUI; CU içereren klasöre giriyoruz ve setup dosyasını çalıştırıyoruz. Karşımıza Update ekranı geliyor. Don’t check updates right now ile devam ediyoruz.

Lisans sözleşmesi sayfasını onaylayarak devam ediyoruz.

Ön gereksinimler kontrol ediliyor ve yüklemeyi başlatıyoruz.

Yükleme devam ediyor.

Yükleme başarılı bir şekilde tamamlandığında aşağıdaki ekran ile karşılacağız.

Yükleme sonrasında sunucuyu yeniden başlatıyoruz.

Adım 7 Bakım Modundan çıkarmak

Adım 4 de yaptığımız bakım moduna sokma adımlarının tam tesrini yapacağız.

Bakım modundan çıkarmak için aşağıdaki komutu giriyoruz.

Set-ServerComponentState exc01 -Component ServerWideOffline -State Active -Requester Maintenance

DAG clusterında node’u aktif ediyoruz.

Resume-ClusterNode -Name exc01

DAG üzerinde bulunan databaselerin aktif olarak bu sunucuda çalışabilmesi ve senkronizasyon işlemlerinin başlaması için aşağıdaki komutu giriyoruz.

Set-MailboxServer exc01 -DatabaseCopyActivationDisabledAndMoveNow $false

HubTransport rolunu Draining mode’dan aktif mode aşağıdaki komutu girerek yapıyoruz.

Set-ServerComponentState exc01 -Component HubTransport -State Active -Requester Maintenance

Adım 8 Kontroller

DAG durumunu kontrol etmek için

Get-ClusterNode exc01

Servis sağlık durumlarını kontrol etmek için

Test-ServiceHealth exc01

MAPI bağlantısını kontrol etmek için

Test-MAPIConnectivity -Server exc01

Get-MailboxDatabase | Test-MAPIConnectivity

DAG Database sağlık durumunu kontrol etmek için

Get-MailboxDatabaseCopyStatus -Server exc01 | Sort Name | Select Name, Status, Contentindexstate

Get-MailboxDatabaseCopyStatus * | Sort Name | Select Name, Status, Contentindexstate

Bu işlemler sonrasında Security Update’i basit bir şekilde geçebilirsiniz.

Yapınızdaki diğer exchange sunucular için Adım 4 haricindeki bütün adımları izleyerek devam edebilirsiniz. Adım 4 domain yapısında bir defa yapılması gereken bir adımdır.

Faydalı olması dileğiyle.

Leave a comment