Active Directory Yükseltme Süreci

(Active Directory Upgrade Process)

Windows Server 2019’un çıktığı şu günlerde birçok kişi “daha biz Active Directory’yi 2016’ya taşımadık ki nereden çıktı bu Server 2019” sözlerini işitir oldum. Hatta çoğu Admin arkadaş “en iyi sistem çalışan sistemdir. Bırak dokunma” felsefesi ile hareket ettiğinden. İlerde neler olacağını bilmeden korku ile durumu izlemektedir.

Bunun üzerine bende başarılı bir şekilde nasıl Active Directory yapınızı yükseltebileceğinizi anlatmak istedim. Burada anlatacağım yöntemler portalımızda değişik makalelerde anlatılmış bilgiler. Ben yaşadığım tecrübeler ile bu bilgileri birleştirip adım adım tüm sürümlerden üst versiyona geçişi yapabilmenizi sağlayacak yol haritasını “Geriye Dönüş Planı” ile sunmuş oluyorum.

Evet geriye dönüş planımız ve kullanılabilir durumda fakat Burada dikkat edilecek nokta geçiş süresi içerisinde Freez ilan edilip yani hiçbir değişiklik yapılmamaya gayret sarf edilmelidir.

Bir diğer nokta ise bu referans dökümanını tüm sürümlerden bir üst sürüme yani 2003’ten 2008’e veya 2008’den 2008R2’ye veya 2008R2’den 2012’ye veya 2012’den 2012R2’ye veya 2012R2’den 2016’ya veya 2016’dan 2019’a geçişte kullanabileceksiniz. Fark ettiyseniz hep sürüm atlamadan bir üst versiyona geçiş yapılmaktadır. Buradaki en önemli sır bu ve her bir yükseltme işlemi sonrasında yapınızın büyüklüğüne göre en az 1 hafta beklenilip bu süreç en baştan işletilmeli.

Active Directory’nin en çok sevdiğim yanı geriye uyumluluk ve stabil oluşu. Fakat kurum içinde kullanılan uygulamaların bazıları çok eski teknoloji kullandıkları için geçişler sürümcemeli geçebiliyor. Bu nedenle geçiş öncesinde kritik uygulamalarınız için genel bir test ortamı kurup test etmeniz gerekmektedir.

Her ürünün bir yaşam döngüsü bulunmakta. Aşağıda verdiğim link ile kullandığınız sürümün geçerlilik süresini kontrol edebilirsiniz. Sadece sorun destek alabilmek değil kurum içerisinde bir geliştirme veya kurulum yapılmak istendiğinde sınırlara takılma riski doğmaktadır.

https://support.microsoft.com/en-us/lifecycle/search/1163

Active Directory’yi sadece kimlik doğrulama olarak düşünmemek lazım aslına bakılırsa obje bazlı tam bir veri tabanı sunmakta. Bu veri tabanı ise şema ile şekillenmek. Şema ise sürüm yükseltildikçe güncel alanlar otomatik gelmektedir. Bu nedenle sürüm yükseltilmesi önem arz etmektedir.

Veri kaybına ve kesintiye neden olmamak için yapılacak adımları 2 ana başlık altında topladım. İlk adım Mevcut sistemin yapısal kontrolünün sağlanıp Geçişe Hazırlık ikinci adım Geçiş’tir.

Geriye Dönüş Planı:

Çalışma öncesinde Tüm Sanal DC sunucuların snapshot’ını fiziksel sunucularınızı ise Veeam ile disk imajı olarak yedeklenir.

Eğer olası kötü bir problem yaşarsanız ve çözüm sağlayamaz iseniz tüm DC’leri kapatıp Shapshot’dan geriye dönülüp tüm sunucuları aynı anda açınız.

Not: Bu şekilde herşey ilk haline gelmiş oldu. Snapshot’ın alındığı andan itibaren geçen sürede yapılan tüm değişiklikler gidecektir.

Birinci Adım Geçişe Hazırlık:

a) Active Directory ve DNS’in Temizlenmesi:

Active Directory üzerinde aşağıdaki komutu komut satırında (cmd) çalıştırın. Bu komut ile 12 haftadan fazla süredir pasif olan bilgisayarları listeler. Liste içerisinden silebilecekleriniz varsa siliniz.

dsquery computer -inactive 12 | dsrm -noprompt > c:\logs\inactivecomputer.txt

Active Directory üzerinde aşağıdaki PowerShell komutu yetkili hesapla çalıştırınız. Bu komut ile 90 günden fazla süredir pasif olan kullanıcıları listeler. Liste içerisinden silebilecekleriniz varsa siliniz.

Search-ADAccount –AccountInActive –TimeSpan 90:00:00:00 –ResultPageSize 2000 –ResultSetSize $null | ?{$_.Enabled –eq $True} | Select-Object Name, SamAccountName, DistinguishedName | Export-CSV “C:\logs\InActiveUsers.CSV” –NoTypeInformation

DNS üzerinde eskiden kalan kayıtlar veya bilgisayarı silinmiş fakat kaydı kalan objeleri siliniz. Buna ek olarak Geçiş süresince DHCP’den DNS’e otomatik kayıt oluşturulmasını engellemek için IP Scope ayarlarında “Lease duration” süresini geçiş için planladığınız maksimum süreye çıkartınız.

b) Network Yapılandırması

Tüm Domain Controler (DC) sunucularınızın network adaptör portunun DNS kısmında ilk sırada kendisi olmalı. Bununla birlikte diğer tüm DC’lerin ip adresleri sırası ile DNS server kısmına eklenmeli.

Eğer WINS sunucunuz var ve DC üzerinde değil ise DC sunucularınızın işletim sistemi 2012R2 ve üstü ise network adaptör portundaki WINS sunucu alanından WINS sunucularınızı kaldırın.

Tüm ayarlar doğru ve kullanılabilir olduğunda her bir DC üzerinde “ipconfig /registerdns” komutunu yetkili hesapla çalıştırınız.

c) Global Catalog Sunucularınızın Kontrolü

Doğrusu tüm DC’lerinizde Global Catalog’un olmasıdır. Bunun kontrolü için aşağıdaki PowerShell komutu ile GC sunucularınızı listeleyin.

Get-ADDomainController -Filter {IsGlobalCatalog -eq $true}

veya

Get-ADForest | Select-Object -ExpandProperty GlobalCatalogs

Eğer ekli değil ise “Active Directory Sites and Services” açıp DC’leri tıklayıp altında açılan “NTDS Settings” üzerinde sağ tıklayıp Properties tıklayın. Açılan ekranda General sekmesi altındaki “Global Catalog” u tıklayarak atif ediniz.

d) Şema Seviyesinin Kontrolü

Tüm DC’lerde Şema seviyesinin doğru olup olmadığını Register (regedit) üzerindeki HKEY_Local_Machine\System\CurrentControlSet\Services\NTDS\ altındaki Parameters’da yazan değeri kontrol ediniz. Eğer farklılık varsa sağlık taraması adımına geçiniz.

Şema Versiyon Değerleri:

· Windows Server 2008 (W2K8) : 44

· Windows Server 2008 R2 (W2K8 R2): 47

· Windows Server 2012 : 52

· Windows Server 2012 R2: 69

· Windows Server 2016 : 87

e) DNS’teki Kontrolü

DNS sunucunuz üzerindeki Name Server (NS) kayıtlarını kontrol ediniz. Eğer eskiden kalan, yanlış bilgi içeren kayıt varsa not edip siliniz. DNS üzerinde static kayıt olması pek istenmez. Eğer kayıt silme işlemi yaptıysanız ilgili DC üzerinde “ipconfig /registerdns” komutunu yetkili hesapla çalıştırınız.

Active Directory üzerindeki DNSAdmin gurubuna DC sunucuları ve işlem yapacak hesabı ekli olup olmadığını kontrol ediniz. Eğer yoksa ekleyiniz.

Kaldırılacak DC’nin DNS üzerinde kendini kaldırabilmesi için DNS üzerindeki domain ve _msdcs. domainlerinin security tabına mevcut DC’leri hesabını ekleyip full yetki verin

f) DC’lerin SID Numarasını Note Edin:

Olası bir problemde ADSIEdit üzerinde işlem yapmanız veya arama yapmanız gerekebilir. Bu durum için aşağıdaki PowerShell komutu ile tüm DC’lerin SID numarasını başka bir alana note edin.

Get-ADComputer ad1 -Properties * | fl *id*

g) GPO’ları Yedeklemek:

Tüm DC’ler üzerinde GPO’lar yedeklenir. Eğer hata verdiyse hata düzeltilir. Buna ek olarak her DC üzerinden alınan yedek karşılaştırılır. Eğer DC’ler arasında farklılık varsa sağlık taraması adımına geçilir.

GPO Yedeklemesi için “Group Policy Management Tools” çalıştırılır. Gelen ekranda “Group Policy Objects” üzerinde sağ tıklanır ve “Backup All” denilir.

h) AD Veri Tabanı Boyutlarının kontrolü:

Her Active Directory sunucunuzdaki C:\Windows\NTDS klasörü altındaki ntds.dit dosyasının boyutlarını kontrol ediniz. İstenen her bir DC üzerindeki boyut bir birine denk olmasıdır. Eğer arada çok büyük farklar varsa sağlık taraması adımına daha erken geçebilirsiniz.

i) Anti virüs Yapılandırması

Eğer sunucularınızda anti virüs kurulumu yapıldı ise aşağıdaki linkte Microsoft’un önerdiği ayarları yapınız.

https://support.microsoft.com/en-ie/help/822158/virus-scanning-recommendations-for-enterprise-computers-that-are-runni

k) MaxPoolThreads değerinin Yükseltilmesi

MaxPoolThreads, sunucunun her bir işlemci (CPU) için ne kadar network dinlemesi yapacağını belirtmektedir. Default değeri her CPU için 4’tür. Bu değer çoğu zaman kritik ve yoğun network trafiği yöneten File Server, RDS, IIS, DC gibi sunucularda yetersiz kalmakta bu nedenle AD işleyiş yoğunluğunuza göre bu değeri arttırmanız önerilir.

Bu işlem için register açılarak aşağıdaki alan için REG_DWORD olarak MaxPoolThreads oluşturup değerini yükseltin.

Not: En fazla 20 verilebilir

HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\InetInfo\Parameters\MaxPoolThreads

Kaynak:

https://docs.microsoft.com/en-us/office/client-developer/access/desktop-database-reference/specifying-threads-per-processor-on-iis

https://support.microsoft.com/en-us/help/315071/how-to-view-and-set-ldap-policy-in-active-directory-by-using-ntdsutil

l) Event Viewer Log’larının Kontrolü

Çoğu zaman kritik bir problem olmadan önce Event Viewer bize ipuçları verebiliyor. Bu nedenle DC’ler üzerinde yoğun işlem yapmadan önce Event kayıtlarının incelenmesi ve hataların düzeltilmesi gerekmektedir.

Özellikle domain’den düşmüş makineler varsa önceliğinizi buraya verip bu bilgisayarların yeniden erişebilir ve policy alabiliyor olmalarını sağlamalıyız.

m) DC’lerin Restart Edilmesi:

Genellikle AD sunucuların restart sonrası açılmama riskinden dolayı kolay kolay restart ve update edilmez. Bu nedenle öncelikle DC sunucularımızda aşağıdaki komutu çalıştırıp en son ne zaman restart olduklarını note ediniz.

systeminfo | find “Boot Time”

n) DC’lerin Güncellenmesi

Temiz bir geçiş için sisteminizin güncellenip DC Upgrade için uygun hale getirmeniz gerekiyor. Fakat DC’ler genellikle çok uzun süredir restart edilmediğinden ve güncellenmediğinden bu işlem riskli olabilir. Bunun için en iyi yöntem öncelikli olarak sanal sunucuların snapshot alarak başlamak. Fiziksel sunucuları da Veeam ile yedeklemeniz. Güncelleme bitip sunucu sorunsuz şekilde açılıp çalışmaya başladığında snapshot’ı silmeyi unutmayın

“Madem sunucuyu silicez neden güncelliyoruz” sorusunu sorduğunuzu duyar gibiyim. Bunun en temel nedeni Migration için bazı gereksinimlerin veya daha önceden tespit edilmiş problemlerin çözümlenmiş olma ihtimalidir.

o) Meta Data Temizliği (Cleaning)

Daha önceden bir şekilde kurulmuş fakat kaldırma prosedürü uygulanmadan kaldırılan veya kurulmaya başlanmış fakat problem çıktığı için kapatılan sunucularınız varsa geçiş öncesinde aşağıdaki adımları yapıp temiz bir şekilde başlangıç yapmanız gerekmektedir.

Eğer kuruma sonradan gelmiş iseniz bu tip askıda kalmış DC bilme durumunuz olmayabilir. Bunun için öncelikle “Active Directory Sites and Services” içerisine bakınız. Mevcut sunucularınızdan farklı olan varsa ismini not edin. İkinci olarak DNS üzerinde TYPE’ı “Name Server” olanlarla mevcut DC’lerinizi karşılaştırıp farklı olanları not etmeniz. Sonra bu bilgileri kurumun en eski personeline sunmak eğer o da yoksa topolojiyi çıkartıp inceleme sonucunda aşağıdaki komutları “Run as Administrator” ile açılan cmd komut satırı arabiriminde system32 klasörü altına gelerek sırayla çalıştırıp temizliği gerçekleştirin.

ntdsutil

metadata cleanup

remove selected server sunucuismi

Ek olarak ADSI Edit’i içinde silinen sunucuları aratın bulursanız silin. Bu işlemin sonunda “AD User and Computer” ve DNS üzerinden de aratıp bulursanız silin.

p) Geçiş Yapılacak Sürümde DC kurulumları

Site yapınıza uygun olarak geçiş yapılacak sürümlerde DC kurulumlarını sunucu ismini büyük harfle yazarak yapınız.

Not: Full Windows Update ve Network kart ayarlarını yapmayı unutmayınız.

r) DC’ler üzerinde Paylaşılmış dizinleri kontrol edin

Active Directory domain servisini kurduğunda yani bir DC yaptığınızda NETLOGON ve SYSVOL paylaşım alanlarının açılması gerekiyor. “net share” komutu ile paylaşılmış dizinlere bakın. Eğer paylaşımlar yoksa aşağıdaki komutları çalıştırarak paylaşıma açın.

net share NETLOGON=C:\Windows\SYSVOL\sysvol\domain\SCRIPTS /grant:everyone,Read

net share SYSVOL=C:\Windows\SYSVOL\sysvol /grant:everyone,Read

s) AD Replikasyon kontrolünün yapılması

Aşağıdaki komutları sırayla her DC’de çalıştırınız eğer hata varsa hata veren DC’de hatayı düzeltiniz

repadmin /syncall (Site içerisinde replikasyonu başlatır)

repadmin /syncall /AdeP (Tüm DC’ler arasında replikasyonu başlatır)

repadmin /showrepl (Tüm DC’ler arasında replikasyonu görüntüler)

repadmin /replsum (DC’lerin son replikasyon zamanını gösterir

DFSDIAG /TESTDCS (2012 ve sonrası DC’lerde paylaşım alanlarını kontrol eder)

dcdiag /test:DNS (2012 ve sonrası DC’lerde DNS hizmetini kontrol eder)

nltest /dsregdns

t) AD Sağlık Taraması (Health Check)

Aşağıdaki komut normalde tek bir DC’de çalıştırsanız yeterli fakat geçiş aşamalarında her bir DC’de ayrı ayrı çalıştırıp inceleyin. Çok uzun bir doküman çıktısı üretiyor. Önerim dosyayı kendi bilgisayarınıza alıp WORD uygulaması ile açmanız ve adım adım incelemeniz. Sadece hata araması yaparak okumayın. Bazen process başlıyor ve başarıyla tamamlandığını bildiriyor fakat arada uyarı mesajı yazabiliyor.

DCDIAG /c /v /e > c:\saglik_tarama.txt

repadmin /showrepl sunucuismi /verbose /all /intersite >c:\repl.txt

u) Obje Silinebilme Ayarlarının Kontrol edilmesi

Active Directory’de objelerin yanlışlıkla silinmesini engellemek için Object tabı altında ‘Protect object from accidental deletion’ alan işaretli gelmektedir. Kaldırma işleminin sorunsuz olabilmesi için kaldırılacak DC’lerdeki Computer object ayarında ‘Protect object from accidental deletion’ işaretli ise işareti kaldırın.

Buna ek olarak “AD Sites and Services” içerisindeki DC’lere ait “NTDS Settings” in Object tabı altında ‘Protect object from accidental deletion’ kutucuğundaki işareti kaldırın

 

v) DC Kaldırma İzni için Policy Düzenleme

Domain Control sunucuları “Default Domain Controllers Policy” altındaki “Enable Computer and User Accounts to be trusted for Delegation ve “Manage auditing and security log” policy’ler tarafından korunmaktadır. Bu alanlara kaldırılacak DC ve kaldırma işlemini yapacak hesabı ekleyin.

NOT: Geçiş tamamlandığında eski haline getirmeyi unutmayın.

y) AD Certifika servisinin taşınması

Olma ihtimali düşük olsa da başıma geldiği için son adım olarak buraya ekleme ihtiyacı duydum. Eğer DC üzerinde Certifika Servisini yapılandırdıysanız geçiş öncesinde taşımasını gerçekleştiriniz. Bu adım başlı başına bir konu olduğundan burada anlatmayacağım.

İkinci Adım: Active Directory Yükseltme (Upgrade)

Başta söyledim fakat önemine binaen yenilemek isterim, Active Directory forest ve domain seviyesinin yükseltilmesi yapılırken adım adım sürüm atlamadan yapılması gerekmektedir. Yani 2003’ten 2008’e veya 2008’den 2008R2’ye veya 2008R2’den 2012’ye veya 2012’den 2012R2’ye veya 2012R2’den 2016’ya veya 2016’dan 2019’a geçişte kullanabileceksiniz. Fark ettiyseniz hep sürüm atlamadan bir üst versiyona geçiş yapılmaktadır.

Eğer birden fazla yükseltme (upgrade) yapacaksanız Her bir yükseltme işlemi sonrasında yapınızın büyüklüğüne göre en az 1 hafta beklenilip Birinci Adım Geçiş Hazırlık’tan itibaren bu süreç en baştan işletilmeli.

a) Tüm DC’lerin Disk Yedeğinin alınması

En kötü senaryo durumunda tüm DC’leri kapatıp imaj yedeğinden açılabilmesi için çalışmaya başlamadan önce sanalsa snapshot fiziksel ise Veeam gibi disk imaj yedeği alan program ile yedeğinin alınması gerekiyor.

b) FSMO Rollerin taşınması

Aşağıdaki komutu herhangi bir DC üzerinde çalıştırarak yeni kurduğunuz DC’ler ile birlikte Active Directory içindeki DC’leri listeleyin. Topolojinizdeki ile aynı mı kontrol edin.

nltest /dclist:tamdomainismi

Aşağıdaki komutu herhangi bir DC üzerinde çalıştırarak FSMO rollerin hangi sunucularda olduğunu öğrenin.

netdom query fsmo

DC’ı kaldırmadan önce FSMO rollerini yeni kurduğunuz en üst seviye sunucularınıza taşıyınız. Bunun için aşağıdaki PowerShell komutunu kullanabilirsiniz.

Move-ADDirectoryServerOperationMasterRole -Identity rol-tasinacak-dc-ismi -OperationMasterRole SchemaMaster,DomainNamingMaster,PDCEmulator

veya

Move-ADDirectoryServerOperationMasterRole -Identity rol-tasinacak-dc-ismi -OperationMasterRole 3,4

Komut içerisnde yer alan OperationMasterRole’lerin kodlarını aşağıda yer almaktadır.

  • PDCEmulator or 0
  • RIDMaster or 1
  • InfrastructureMaster or 2
  • SchemaMaster or 3
  • DomainNamingMaster or 4

Rol taşıması sonrasında en az 1 gün bekleyin. Bekleme zamanı geçtikten sonra Replikasyon ve AD Sağlık Taraması (health check) adımlarını tekrarlayınız.

c) AD Rolünü Kaldırın

Son adıma yaklaşmış bulunmaktayız. Burada dikkat edilecek nokta Enterprise Admin yetkisine sahip kullanıcı ile DC’ye login olun.

Eğer GUI ekranlı sunucu kullanıyorsanız olası problemleri görüp hemen müdahele edebilmek adına önerim “Server Manager” üzerinden AD rolünü kaldırınız. Eğer core sürüm kullanıyorsanız aşağıdaki PowerShell komutunu kullanabilirsiniz.

Uninstall-ADDSDomainController -DemoteOperationMasterRole –RemoveApplicationPartition

Sunucu restart ettikten sonra DNS rolünü kaldırıp sunucuyu restart edin. Sunucun ip adresini değiştirin. Eski ip adresini yeni kurduğunuz uygun DC’ye verin. İp adresini verdiğiniz sunucu üzerinde aşağıdaki komutu çalıştırınız.

ipconfig /registerdns

Sunucuyu domain’den çıkartmadan önce en az 1 gün bekleyin. Bekleme zamanı geçtikten sonra Replikasyon ve AD Sağlık Taraması (health check) adımlarını tekrarlayınız.

Her şey iyi ve sorunsuz olduğunda Sunucuyu domain’den çıkartıp sunucuyu kapatınız. Çıkarttığınız sunucu için Meta Data Temizliği yapın.

Sildiğiniz sunucu ismi ile AD, AD Site ve DNS üzerinde aratıp varsa siliniz.

d) Functional Seviyesinin Yükseltilmesi

Bu adımın geriye dönüşü yok. Buraya kadar başarılı ve sorunsuz bir geçiş yaptığınızı ümit ediyorum. Eğer sorun yaşadı iseniz sorun çözümlerini hallederek Son adıma gelmiş olmuşunuzdur.

Functional seviyesini yükseltirken ilk olarak Domain sonra Forest adımını yapacağız. Her bir adımda gene 1 gün bekleyip Replikasyon ve Sağlık taramalarını gerçekleştireceğiz.

Aşağıdaki PowerShell komut ile güncel seviyenizi kontrol ediniz.

Get-ADDomain

Get-ADForest

Domain Functional seviyesini Aşağıdaki PowerShell komut ile yükseltebilirsiniz

Set-ADDomainMode –Identity “domain-isminiz” –DomainMode Windows2012R2Domain

Forest Functional seviyesini Aşağıdaki PowerShell komut ile yükseltebilirsiniz

Set-ADForestMode –Identity “domain_FQDN_adresi” –ForestMode Windows2012R2Forest

Komut içerisinde kullanacağınız kodları ve karşılıklarını aşağıda bulabilirsiniz.

  • Windows2000Forest or 0
  • Windows2003InterimForest or 1
  • Windows2003Forest or 2
  • Windows2008Forest or 3
  • Windows2008R2Forest or 4
  • Windows2012Forest or 5
  • Windows2012R2Forest or 6

Herşey yolunda gittiğinde artık kaldırılan tüm DC’lerin Snapshot yedeğinizi silebilirsiniz. Eğer beklenmeyen bir durum ile karşılaşır ve çözüm sağlayamaz iseniz tüm DC’leri kapatıp geriye dönüş seneryosunu uygulayınız.

Umarım faydalı bir makale olmuştur. Bir sonraki makalemde görüşmek üzere.

Paylaşım