Windows Server

Active Directory Tiering Model Tasarımı Bölüm-1

Microsoft Active Directory hizmeti organizasyonlarımızın temel taşını oluşturur. Organizasyonlar içersindeki kullanıcılar, bilgisayarlar, yazıcılar gibi tüm bilgileri saklar. En önemlisi kimliği yönetir. Bu kadar önemli bir hizmetin doğru dizayn edilmesi hayatı önem taşır. Özellikle siber saldırıya uğrayan ortamlar incelendiğinde kullanıcı kimlik bilgilerinin doğru yönetilmediği görülmektedir. Gömleğin ilk düğmesi olan Active Directory Servisi doğru dizayn edilip doğru yönetilerek organizasyon seviyesinde güvenlik risklerinizi aşağıya çekebilir daha güvenli bir ortam sağlayabilirsiniz.

Bu makale serimizde güvenli bir Active Directory ortamı nasıl oluşturabiliriz, oluşturduktan sonra güvenli bir şekilde nasıl yönetebiliriz bu konuları inceleyeceğiz.

Makaleyi okumadan önce Sayın Hocalarım Hakan UZUNER ve Gökhan YÜCELER’in aşağıdaki webcast’ini izlemenizi şiddetle tavsiye ediyorum.

Ajanda

1 – AD tarafında TIER Mode’in temelini atacağız ve genel çatıyı oluşturacağız.

2- Group Policy’ler ile yetkilendirmeleri yapacağız.

3 – PAW (Privileged Access Workstations) kurulumu yapacağız.

4 – LAPS kurulumu yapıp sisteme entegre edeceğiz.

5 – Red Forest (The Enhanced Security Administrative Environment (ESAE) üzerinde duracağız.

TIER Model Nedir ?

Tier Model tasarımı genel olarak kullanıcı yetkilerinin bir birinden ayrıldığı, yetkili kullanıcıların sadece kendilere verilen izinler çerçevesinde Domain kaynaklarına erişebildiği bir yapıdır. Tier yapısının getirdiği en önemli güvenlik seviyesi özellikle “sensitive account” olarak tabir edilen Domain Admins hesaplarını korumaktır.

Dünya genelindeki siber saldırı vakalarına bakıldığında en çok görülen saldırı tekniklerinden birisi saldırganların son kullanıcı bilgisayarlarına sızması daha sonra dikey haraket dediğimiz yetkisini yükselte yükselte Domain Admin seviyesine kadar çıkması olarak görülmekte. Bunun en temel nedeni farkı yetkilere sahip hesapların kesinlikle login olmaması gereken sistemlere erişmesi, erişim sonrası o sistemde parola hash bilgisinin bırakması ve saldırganların “pass the hash” saldırı tekniği ile hash’den parola üreterek dikeyde haraket edip kritik öneme sahip (Domain Controller gibi) sistemlere erişmesi.

İşte yukarıda verdiğimiz örnekler ve daha fazlasının önüne geçmek için hesap erişimlerini bir birinden izole etmemiz gerekiyor. Örnek vermek gerekirse, Domain Admin hesaplarının “sDomain Controller sunucuları” dışındaki sunuculara login olmamaması , ayın şekilde sunuculara login olma yetkisi olan hesapların “Domain Controller sunucuları ve son kullanıcı bilgisayarlarına login olamaması” son olarakta son kullanıcı hesaplarının “Domain Controller ve diğer sunuculara login olamaması”. Aşağıdaki grafik bu anlattıklarımızı özetliyor.

Hadi başlayalım, aşağıda görüldüğü gibi “konya.local” adminda bir domain’im var. İlk olarak “_konya” adında bir OU oluşturacağım ve diğer tüm OU yapısını bu OU altına oluşturmaya devam edeceğim.

Yapıyı dizayn ederken bazı scriptler kullanacağız, ilk olarak bu scriptleri bilgisayarımıza bu github reposundan indiriyoruz. Daha sonra “c” sürücümüze “Tools” adında bir klasör oluşturuyoruz.

Daha önce indirdiğimiz scriptler’den “Create-OU.ps” scriptini bu klasöre kopyalıyoruz.

İlk olarak aşağodaki satırları powershell ile çalıştırıyoruz.

$location = Get-Location
Set-Location C:\Tools
Import-Module ActiveDirectory
$dNC = (Get-ADRootDSE).defaultNamingContext

Sonrasında aşağıdaki “c:\tools” klasörüne gidip PS scripti çalıştırıyoruz.

$OUs = @(
    $(New-Object PSObject -Property @{Name = "Admin"; ParentOU = "ou=_konya" }),
    $(New-Object PSObject -Property @{Name = "Groups"; ParentOU = "ou=_konya" }),
    $(New-Object PSObject -Property @{Name = "Tier 1 Servers"; ParentOU = "ou=_konya" }),
    $(New-Object PSObject -Property @{Name = "BILGISAYARLAR"; ParentOU = "ou=_konya" }),
    $(New-Object PSObject -Property @{Name = "KULLANICILAR"; ParentOU = "ou=_konya" }),
    $(New-Object PSObject -Property @{Name = "Quarantine"; ParentOU = "ou=_konya" })
)
.\Create-OU.ps1 -OUs $OUs -Verbose

Aşağıda görüldüğü gibi “_konya” OU altına temel OU’larımız oluşturdu. Şimdi oluşturdukları OU’ları beraber inceleyelim.

Admin – Yönetimsel hesaplar ve grupların bulunduğu OU

BILGISAYAR – Son kullanıcı bilgisayarının bulunduğu OU

Groups – Distribution Groups, Security Groups ve Contacts’lar bu OU’da

Quarantine – Bir siber olayda karantinaya alınacak Domain objeleri bu OU’da olacak.

Tier 1 Servers – Domain Controller hariç tüm sunucular bu OU’da olacak

İkinci adımlarak alt OUlarımızı oluşturuyoruz.

$OUs = @(
    $(New-Object PSObject -Property @{Name = "Tier0"; ParentOU = "ou=Admin,ou=_konya" }),
    $(New-Object PSObject -Property @{Name = "Tier1"; ParentOU = "ou=Admin,ou=_konya" }),
    $(New-Object PSObject -Property @{Name = "Tier2"; ParentOU = "ou=Admin,ou=_konya" }),
    $(New-Object PSObject -Property @{Name = "Accounts"; ParentOU = "ou=Tier0,ou=Admin,ou=_konya" }),
    $(New-Object PSObject -Property @{Name = "Groups"; ParentOU = "ou=Tier0,ou=Admin,ou=_konya" }),
    $(New-Object PSObject -Property @{Name = "Service Accounts"; ParentOU = "ou=Tier0,ou=Admin,ou=_konya" }),
    $(New-Object PSObject -Property @{Name = "Devices"; ParentOU = "ou=Tier0,ou=Admin,ou=_konya" }),
    $(New-Object PSObject -Property @{Name = "Tier0 Servers"; ParentOU = "ou=Tier0,ou=Admin,ou=_konya" }),
    $(New-Object PSObject -Property @{Name = "Accounts"; ParentOU = "ou=Tier1,ou=Admin,ou=_konya" }),
    $(New-Object PSObject -Property @{Name = "Groups"; ParentOU = "ou=Tier1,ou=Admin,ou=_konya" }),
    $(New-Object PSObject -Property @{Name = "Service Accounts"; ParentOU = "ou=Tier1,ou=Admin,ou=_konya" }),
    $(New-Object PSObject -Property @{Name = "Devices"; ParentOU = "ou=Tier1,ou=Admin,ou=_konya" }),
    $(New-Object PSObject -Property @{Name = "Accounts"; ParentOU = "ou=Tier2,ou=Admin,ou=_konya" }),
    $(New-Object PSObject -Property @{Name = "Groups"; ParentOU = "ou=Tier2,ou=Admin,ou=_konya" }),
    $(New-Object PSObject -Property @{Name = "Service Accounts"; ParentOU = "ou=Tier2,ou=Admin,ou=_konya" }),
    $(New-Object PSObject -Property @{Name = "Devices"; ParentOU = "ou=Tier2,ou=Admin,ou=_konya" })
)
.\Create-OU.ps1 -OUs $OUs -Verbose

Aşağıda görüldüğü gibi, T0, T1 ve T2 OU ve altlarına gerekli OU’lar oluşturuldu.

Devam ediyoruz. Şimdi “Groups” OU altına iki yeni OU oluşturuyoruz. Bunlar Distribution Groups, Security Groups ve Contacts’lar OU olacak.

$OUs = @(
    $(New-Object PSObject -Property @{Name = "Security Groups"; ParentOU = "ou=Groups,ou=_konya" }),
    $(New-Object PSObject -Property @{Name = "Distribution Groups"; ParentOU = "ou=Groups,ou=_konya" }),
    $(New-Object PSObject -Property @{Name = "Contacts"; ParentOU = "ou=Groups,ou=_konya" })
)
.\Create-OU.ps1 -OUs $OUs -Verbose

Sırada “Tier 1 Servers” OU altına yapımıza uygun alt server OU’ları oluşturuyoruz.

$OUs = @(
    $(New-Object PSObject -Property @{Name = "APP"; ParentOU = "ou=Tier 1 Servers,ou=_konya" }),
    $(New-Object PSObject -Property @{Name = "EXC"; ParentOU = "ou=Tier 1 Servers,ou=_konya" }),
    $(New-Object PSObject -Property @{Name = "DB"; ParentOU = "ou=Tier 1 Servers,ou=_konya" }),
    $(New-Object PSObject -Property @{Name = "IIS"; ParentOU = "ou=Tier 1 Servers,ou=_konya" }),
    $(New-Object PSObject -Property @{Name = "STORAGE"; ParentOU = "ou=Tier 1 Servers,ou=_konya" }),
    $(New-Object PSObject -Property @{Name = "DEVOPS"; ParentOU = "ou=Tier 1 Servers,ou=_konya" })
)
.\Create-OU.ps1 -OUs $OUs -Verbose

BILGISAYAR OU altna alt OU’ları oluşturacağız.

$OUs = @(
    $(New-Object PSObject -Property @{Name = "Desktops"; ParentOU = "ou=BILGISAYARLAR,ou=_konya" }),
    $(New-Object PSObject -Property @{Name = "Laptops"; ParentOU = "ou=BILGISAYARLAR,ou=_konya" }),
    $(New-Object PSObject -Property @{Name = "Kiosks"; ParentOU = "ou=BILGISAYARLAR,ou=_konya" })
)

.\Create-OU.ps1 -OUs $OUs -Verbose

Son olarak “KULLANICILAR OU”‘su altına gerekli alt OU’ları oluşturuyoruz.

$OUs = @(
    $(New-Object PSObject -Property @{Name = "Desktops"; ParentOU = "ou=BILGISAYARLAR,ou=_konya" }),
    $(New-Object PSObject -Property @{Name = "Laptops"; ParentOU = "ou=BILGISAYARLAR,ou=_konya" }),
    $(New-Object PSObject -Property @{Name = "Kiosks"; ParentOU = "ou=BILGISAYARLAR,ou=_konya" })
)

.\Create-OU.ps1 -OUs $OUs -Verbose

OU’larımız tamam siz yapınıza göre OU’ların isimlerini değiştirebilir veya sayısını arttırabilirsiniz.

Sırada gruplar var, AD üzerinde yönetimsel olarak büyük kolaylık sağlayan grupları kullanırız. Tier yapımızda çokça grup kullanacağız. İlk olarak yönetimsel gruplarımızı oluşturalım. Bunun bir csv dosyayı kullanıyoruz. Buradan erişebileceğiniz örnek csv dosyasınızı yapınıza uyarlayabilirsiniz. İlk olarak csv dosyamızı düzenliyoruz.

İnidirdiğimiz csv dosyası ve yine daha önce indirdiğimiz “Create-Group” scrip dosyasını yine Tools klasörüne kopyalıyoruz.

.\Create-Group.ps1 -CSVfile C:\Tools\AdminGroups.csv -Verbose

Aşağıda görüldüğü gibi yönetimsel gruplarımız oluştu.

Bu aşama ile Tier yapısının temellerini altmış oldu. Bunda sonraki aşama group policyler kullanarak erişim izinlerini düzenlemek olacak. İlk bölümü burada bitirerken faydalı olmasını dilerim. Keyifli okumalar, sağlıcakla kalın.

Makalemin ikinci bölümü için aşağıdaki linki kullanabilirsiniz;

Active Directory Tiering Model Tasarımı Bölüm-2 – ÇözümPark (cozumpark.com)

İlgili Makaleler

6 Yorum

  1. Sayın Mehmet Sait Bey, Active directory’ i hangi bilgisayara kurmalıyız? Örneğin; Makalenin iki bölümünü de o ağa bağlı (son kullanıcı olmayan) bir bilgisayardan uygulayabilir miyim? Domain Admin haklarına sahip bir bilgisayar ayırıp Active Directory ayarlarını sadece o bilgisayardan yapmalıyız değil mi?

    1. Merhaba,

      İlk önce, AD olacak olan sistem bir fiziksel sunucu veya bir sanllaştırma üzerindeki sanal bir sunucu üzerinde kurulabilir zaten AD rolünü Windows sunucu işletim sistemi dışındaki bir işletim sistemi üzerinde etkin hale getiremezsiniz.

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Başa dön tuşu