SCCM ile Yetkisiz Kullanıcıların İstemci ve Sunucu Platformları Üzerinde Local Administrators Grubundan Temizlenmesi

Merhabalar,

Bu yazımda System Center Configuration Manager üzerinden Compliance Settings aracılığı ile Local Administrators içerisinde bulunan kullanıcıları kontrol ettirterek yetkisiz kullanıcıları nasıl temizliyeceğimizi inceliyor olacağız.

Bilindiği üzere Windows İstemci ve Sunucular üzerinde Local Administrators grubunda bulunan yetkisiz kullanıcıların doğurduğu sonuçlar işletmelerde veri kayıplarına hatta yetkisiz erişimler sonucunda işletmenin işleyişini durdurabilecek kadar güvenlik zafiyetlerine sebep olabilmektedir.

İstemciler üzerinde bulunan Local Administrators grubuna dahil olan kullanıcıların sebebiyet verebileceği zafiyetleri azaltmaya yönelik adımlardan biride yetkisiz kullanıcı hesaplarının temizlenmesidir.

Bunu SCCM ile yönetdiğimiz İstemci ve Sunucu platformlarının hepsinde otomatik olarak gerçekleştirebilirsiniz.

Öncelikle burada yapacağımız İstemcilerimizi üzerinde belirlediğimiz Kullanıcı veya Kullanıcı Gruplarını kontrol etdirteceğiz ve kontroller sonrasında kontrol listemizde bulunmayan kullanıcı veya gruplar bulunuyor ise otomatik olarak temizlenecektir.

Böylelikle hiç bir istemcimiz üzerinde yetkisiz kullanıcı bulunmuyor olacaktır.

Yapılandırmaya başlayabiliriz;

Öncelikle SCCM Yönetim konsolumuz üzerinde Assest and Compliance > Compliance Settings içerisinden yeni bir Configuration Item oluşturmamız gerekmektedir. Bunun için Create Configuration Item diyerek sihirbazımızı başlatıyoruz. Açılan sihirbaz üzerinde oluşturacağımız configuration item’ ımıza Name kısmından bir isim veriyoruz.Settings for devices managed with the Configuration Manager Client kısmında oluşturacağımız bu Configuration Item’ ın hangi istemci türleri için kullalanılacağını belirtmek gerekmektedir. Biz Windows işletim sistemine sahip olan istemcilerimiz için yaptığımızdan dolayı Windows Desktops and Servers(custom)’ ı seçerek devam ediyoruz.

Supported Platforms adımında hazırladığımız bu Configuration Item’ ın hangi işletim sistemleri üzerinde support edileceğini belirtmemiz gerekmektedir. Burada ben ortamımda bulunan istemci işletim sistemlerime uygulayacağımdan dolayı aşağıdaki gibi Windows İstemci İşletim Sistemlerimi seçerek bir sonraki adıma geçiyorum.

Settings adımında New diyerek yeni bir “Yapılandırma” oluşturuyoruz. Bu kısımda yapılandırma yapmamız gereken kısımlar aşağıdaki gibi işaretlenmiş durumdadır. Burada öncelikle Name kısmında Yapılandırmamıza bir isim tanımlıyoruz. Oluşturacağımız Configuration Item’ ımızıda script kullanacağız. Bunun için Setting type kısmında Script ve Data type kısmında String ‘ i seçmeniz gerekmektedir. Yapılandırma noktasında Discovery ve Remediation Script ekliyor olacağız.

Discovery Script : Adında anlaşılacağı gibi keşif için script belirtebileceğiniz kısımdır. Burada istemciler üzerindeki uygunluk kontrollerini yaparak yapacağınız işlemlerde bir değerlendirme verisi toplayacak iseniz bu kısımda belirtmeniz gerekmektedir.

Remediation Script : bu kısımda istemciler uygulayacağınız işleme yönelik script bilgisi girilmelidir. Biz iki aşamalı yapacağımızdan dolayı burada discovery’ den alınan sonuçlara göre istemcilerimiz üzerinde düzeltme yapacağız.

Discovery Script kısmında Add Script diyerek açılan Edit Discovery Script penceresinde istemcilerimizin üzerindeki Local Administrators içerisinde bulunan kullanıcı veya güvenlik gruplarımızı kontrol ediyor olacağız. Belirteceğimiz Script’ in yazıldığı dil ne ise ona göre seçim yapmak gerekmektedir. Biz PowerShell dilinde yazılmış olan script’ imizi çalıştıracağımızdan ötürü Script Language kısmında Windows PowerShell’ i seçerek script’ imizi ekliyoruz.

Script’ imiz içerisinde bulunan işaretle belirlediğim kısımda kontrol edilmesi gereken kullanıcı ve güvenlik gruplarını belirtmeniz gerekmektedir. Bu keşif sırasında burada belirtmediğiniz kullanıcı veya güvenlik grupları bulunuyor ise Remediation Script’ de bulunmayanları temizleyecektir.

Kullanılacak Olan Discovery Script

2730-2

function Get-GroupBySid () {
param(
[parameter(Mandatory=$true,ValueFromPipeline=$true,ValueFromPipelineByPropertyName=$true)]
[Alias("Name")]
[string]$ComputerName,
[string]$GroupNameSid = "S-1-5-32-544"
)
$objSID = New-Object System.Security.Principal.SecurityIdentifier($GroupNameSid)
$objgroup = $objSID.Translate( [System.Security.Principal.NTAccount])
$objgroupname = ($objgroup.Value).Split("\")[1]
return ,$objgroupname
}
$Admingroup = Get-GroupBySid -ComputerName localhost
$members = net localgroup $Admingroup | where {$_ -and $_ -notmatch "command completed successfully"} | select -skip 4
$Adminaccounts = $null
$Adminaccounts = @()
foreach ($member in $members)
{

switch ($member)
{
"Administrator" {}
"MCORP\Administrator" {}
"LocalAdmin" {}
default {$adminaccounts += $member}
}
}

if ($Adminaccounts -ne $null)

{

$Compliance = "No"

}

Else

{

$Compliance = "Yes"

}

$Compliance

Remediation Script bölümünde Add Script diyerek bir İyileştirme Script’ i oluşturmak için açılan pencerede PowerShell dilinde hazırladığımız komut dosyamız için Script Language kısmında Windows PowerShell’ ı seçiyoruz. Script kısmında işaretlemiş olduğumuz kısımda belirtdiğimiz kullanıcı ve güvenlik gruplarının dışında bulunan yetkisiz kullanıcıları temizleyerek bir Windows Event oluşturacaktır.

Kullanılacak Olan Remediation Script

2732-2

function Get-GroupBySid () {
param(
[parameter(Mandatory=$true,ValueFromPipeline=$true,ValueFromPipelineByPropertyName=$true)]
[Alias("Name")]
[string]$ComputerName,
[string]$GroupNameSid = "S-1-5-32-544"
)
$objSID = New-Object System.Security.Principal.SecurityIdentifier($GroupNameSid)
$objgroup = $objSID.Translate( [System.Security.Principal.NTAccount])
$objgroupname = ($objgroup.Value).Split("\")[1]
return ,$objgroupname
}
$Admingroup = Get-GroupBySid -ComputerName localhost
$members = net localgroup $Admingroup | where {$_ -and $_ -notmatch "command completed successfully"} | select -skip 4
$Adminaccounts = $null
$Adminaccounts = @()

foreach ($member in $members)
{

switch ($member)
{
"Administrator" {}
"MCORP\Administrator" {}
"LocalAdmin" {}
default {$adminaccounts += $member}
}
}

foreach ($Adminaccount in $Adminaccounts)
{
net localgroup administrators $Adminaccount /delete
New-EventLog -Source "RemoveAdmin" -LogName "Application" -ErrorAction SilentlyContinue
Write-EventLog -LogName "Application" -Source "RemoveAdmin" -Message “Removing $Adminaccount from the local Administrator group on machine $ENV:COMPUTERNAME” -EventId 10001 -EntryType information

}

Compliance Rules kısmında New diyerek bir kural oluşturuyoruz. Bu kısımda Rule Type’ Value olarak belirlemelisiniz. The setting must comply with the following rule kısımında Equals ve Yes olarak belirtmeniz gerekmektedir. Yazdığımız script içerisinde bir keşif ve doğrulama mekanizması olduğundan dolayıdır. Run the specified remediation script when this setting is noncompliant kutucuğunu işaretliyoruz. Noncompliance severity for repost kısmında da Critical olarak belirtiyoruz. Ki Noncompliant olan istemciler için critical seviye olarak raporda gözüksün.

Oluşturmuş olduğuğumuz Configuration Item’ına ait gerçekleştirdiğimiz yapılandırmaya yönelik özet bilgiyi Summary penceresinde görebiliyoruz. Bu kısımda Next diyerek ilerleyerek Configuration Item’ ımızın oluşumunu tamamlamış oluyoruz.

Oluşturmuş olduğumuz Configuration Item’ ımızı dağıtmak için bir Configuration Baseline oluşturuyoruz. Bu kısımda oluşturduğumuz oluşturduğumuz Configuration Baseline’ a bir tanımlayıcı isim belirtdikten sonra Configuration Data kısmında Add diyerek oluşturmuş olduğumuz Configuration Item’ ımızı ekliyoruz ve OK diyerek Configuration Baseline’ımızı tamamlıyoruz.

Oluşturmuş olduğumuz Compliance Settings’ i dağıtmadan önce istemcilerimizden birtanesinin üzerinde Local Administrators grubuna baktığımızda hazırlamış olduğumuz script içerisinde belirdiğimiz kullanıcı ve güvenlik gruplarının dışarısında MCORP\amutlu diye bir kullanıcı hesabı yetkili olarak gözüküyor. Geçerkleştireceğimiz işlem sonucunda belirtmediğimiz kullanıcıların dışında olan bütün hepsi temizlenmesini sağlayacaktır.

Dağıtımını gerçekleştireceğimiz temel konfigürasyon öğemizin Selected configuration baselines penceresinde olması gerekiyor. Remediate kısmında öğe temelde iyileştirme gerekiyorsa Remediate noncompliant rules when supported kutucuğunu işaretliyoruz. Sistem bakımda iken de iyileştirme yapabileceğini belirtmek içinAllow remediation outside the maintenance window kutucuğu işaretliyoruz.

Collection kısmında dağıtımını yapacağımız ilgili Device Collection’ ımızı belirtiyoruz. Son olarak Schedule kısmında nekadar süre bir istemci üzerine uygulanacağını belirliyoruz. Gerçekleştireceğimiz yapılandırmayı tamamladıktan sonra OK diyerek artık ilgili Device Collection’ ıma dağıtmış oluyoruz.

Dağıtdığımız Configuration Baseline’ ımızı hangi Device Collection’ ımızı gönderildiğini görebiliyoruz.

İstemcimiz üzerinde Configuration Manager > Properties > Configurations sekmesine baktığımızda dağıtımını yaptığımız Configuration Baseline’ ımızın başarılı bir şekilde uygulandığını görüyoruz.

İstemcimiz üzerindeki Local Administrators içerisine baktığımızda Configuration Item içerisinde belirtmiş olduğumuz yetkisiz kullanıcı ve güvenlik gruplarının otomatik olarak silindiğini görüyoruz.

Bu makalede size bahsetmiş olduğum çözüm ile istemci ve sunucu platformları üzerindeki Local Administrators grubunda bulunan yetkisiz kullanıcı ve grupların silinerek bilgi güvenliğinin bir aşaması olan bu konuya bir çözüm sağlamış olduk.

Leave a Comment

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Twitter Auto Publish Powered By : XYZScripts.com