İçerikleri sosyal medya üzerinden paylaşarak daha fazla kişiye ulaşmasına yardımcı olabilirsiniz.



Fırat Boyan 11.10.2022 0

Kullanıcı Disable Etmeden Logon Girişi Nasıl Engellenir?

Danışmanlık hizmeti verdiğim bir müşterim, yıllık izine çıkan çalışanların Active Directory hesaplarını güvenlik sebebiyle Disable ettiklerini ancak bu Disable etme yönetiminin Cisco Call Manager, Cisco Jabber, Okta gibi Active Directory Sync işlemi yapan uygulamalardaki kullanıcı ayarlarını sıfırlaması sebebi ile Diable etmeden Logon işlemini engellemenin bir yönetimini uygulamamı istemişti. Bu işlem için en uygun yöntem, Group Policy Management üzerinde bir GPO oluşturup, bu GPO içinde User Rights Assignment altındaki Deny log on locally ayarını kullanıp, ilgili Security Group nesnesini eklemek olacaktır ancak bu işlemin en az eforla yapılması gerekiyordu. Yani bu işlem öyle bir otomatik hale getirilmeliydi ki Sistem yöneticisi, Active Directory'de sadece çok küçük bir efor harcamalıydı. Bu makalemde sizlere, böyle bir talep karşısında en az eforla bu işlemi nasıl otomatize edeceğinizden bahsedeceğim.

Active Directory Yapılandırması

1- Active Directory hiyerarşi yapım, departman bazında oluşturulmuş durumda olup, her departman için yıllık izin kullanan kullanan kullanıcıların tutulacağı Security Group nesneleri oluşturdum. Bu grupları, aşağıdaki komutla isim kriterinde filtreleyerek görüntülüyorum.

Get-ADGroup -filter * | sort name | select name | Where-Object {$_.name -like "*LEAVE*"}

Deny logon locally

2- Şimdi de bu Security Group nesnelerinin bulunduğu Organization Unit'leri, LDAP bilgileri ile listeliyorum. Organization Unit'lerin LDAP bilgileri ve kullanacağımız Security Group isimleri, ilerleyen adımlarda kullanacağımız script içinde tanımlamak için gerekli olacak.

Get-ADOrganizationalUnit -Filter 'Name -like "*"' | Where-Object {$_.Name -like "*LEAVE*"} | Format-Table DistinguishedName -A

Deny logon locally

3- Her departman için yıllık izin kullanan kullanıcıların tutulacağı Security Group nesnelerinin üyelik işlemleri, bu kullanıcıların belli bir Organization Unit içinde olup olmaması kriterine bağlı olacağı için, yine her departman için ayrı ayrı Organization Unit'ler oluşturdum. Aşağıdaki komut yardımıyla da bu Organization Unit'lerin içerik bilgilerini çekiyorum.

Get-ADUser -Filter * -SearchBase “OU=Users On Leave,OU=IT,OU=Istanbul,OU=Turkey,OU=Europe,DC=firatboyan,DC=local”

Deny logon locally

Group Policy Yapılandırması

4- Active Directory tarafındaki Organization Unit ve Security Group oluşturma işlemlerimi tamamladıktan sonra sıra, Group Policy Management üzerinde bir GPO oluşturup, ilgili tüm Security Group nesnelerini Rights Assignment altındaki Deny log on locally içinde tanımlamak olacak. Bu GPO ayarına erişmek için

Computer Configuration > Windows Settings > Security Settings > Local Policies > User Rights Assisgment

yolunu takip ederek Deny logon locally Policy ayarını çift tıklayarak açıyorum.

Deny logon locally

4.1- Deny logon locally Properties penceresinde Define these policy settings seçeneğini seçiyor, alt kısımdaki Add User or Group... butonuna tıklıyorum.

Deny logon locally

4.2- Add User or Group penceresinde Browse botununa tıklıyor, iligli Security Group nesenelerimi seçerek ekliyorum.

Deny logon locally
Deny logon locally
Deny logon locally
Deny logon locally

Task Scheduler Yapılandırması

5- Active Directory ve Group Policy Yapılandırma işlemlerinden sonra sıra, işlemimizi otomatize etmek için kullanacağımız PowerShell Script dosyasının Task Scheduler içinde belirleyeceğimiz tarih ve zaman aralıklarına çalışmasını sağlamak için gerekli Task Scheduler yapılandırma ayarlarını yapacağım. Bunun için Task Scheduler'ı açıyor, sol bölümdeki Task Scheduler üzerinde sağ tıklayarak Create Task... seçeneğinine tıklıyorum.

Deny logon locally

5.1- Create Task penceresindeki General sekmesi altında Task'ıma bir isim yazıyor, en alt kısımdaki Run with highest privaliges seçeneğini işeretledikten sonra Triggers sekmesine geçiş yapıyorum.

Deny logon locally

5.2- Triggers sekmesinde alt kısımdaki New... butonuna tıklıyor, yeni bir tetikleme işlemi için gerekli ayarlamaları yapıyorum.

Deny logon locally

Buradaki tetikleme işlemi, bir sonraki Actions bölümünde tanımlayacağım PowerShell Script'in ne sıklıkla işletileceği ile ilgili tarih ve saat ayarlarının yapılandırıldığı bölümdür. Ben, Trigger'ımı haftata 1 gün, Pazartesi ve Cuma günleri çalışacak şekilde yapılandırdım. Start bölümündeki tatih ve saat bilgileri, Trigger işleminin ilk başlancının ne zaman ve saat kaçta yapılacağı ile bundan sonraki seçili günlerde hangi saatte yapılacağının ayarlandığı kısımdır.

Deny logon locally

6- Actions sekmesinde alt kısımdaki New... butonuna tıklıyor, yeni bir aksiyon işlemi için gerekli ayarlamaları yapıyorum.

Deny logon locally

6.1- New... butonuna tıkldıktan sonra karşıma gelen penceredeki ayarlarımı aşağıdaki gibi yapılandırıyorum.

Action:
Start a program

Program/Script:

C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe

Add arguments (optional):

-ExecutionPolicy Bypass -File "C:\PS\IST-IT-USR-ON-LEAVE-GRP.ps1"

Deny logon locally

6.2- yapılandırma ayarlarımı tamamladıktan sonra OK butonuna basarak pencereyi kapatıyorum.

Deny logon locally

7- Conditions sekmesinde herhangi bir değişiklik yapmıyorum.

Deny logon locally

8- Settings sekmesinde herhangi bir değişiklik yapmıyorum.

Deny logon locally

9- Task Scheduler'daki Task'ım hazır durumda.

Deny logon locally

PowerShell Script'in Çalışma Prensibi

10- Sistem yöneticisinin harcaması gereken tek efor,  yıllık izine çıkacak olan kullanıcıları Users OU'su içinden, her departmana ait ayrı ayrı oluşturmuş olduğum "Users On Leave" adındaki Organization Unit'lere taşımak olacaktır. Örnek olarak 3 adet kullanıcıyı IT Organization Unit'i altındaki Users OU'sundan "Users On Leave" OU'suna taşıdım.

Deny logon locally

11- Yapılandırdığım Task Scheduler Trigger'ı arka planda çalışmış, "Users On Leave" OU'sunun içini okuyarak, bu OU içindeki kullanıcıları, yine ilgili Security Group'lara üye yapmıştır.

Deny logon locally

12- İlgili PowerShell Script'in çalışma prensibini biraz daha yakından inceleyelim. Oluşturmuş olduğum "Users On Leave" OU'su içine 3 kullanıcı daha taşıyorum.

Deny logon locally

13- Bu sefer de ilgili PowerShell Script'i Windows Powershell ISE ile açıyor, Task Scheduler Trigger'ın zamanını beklemeden çalıştırıyorum. Script, ilgili OU içini okuyup, mevcut olanlara ek olarak sadece yeni eklenenleri ilgili Security Group içine ekleme işlemi yapıyor.

Deny logon locally

14- Aynı işlemin tam tersini yapacak olursak, bu sefer de "Users On Leave" OU'sundan eklediğim son 3 kişiyi tekrar Users OU'su altına taşıdım. Script, ilgili OU içini okuyup, mevcut olanların dışında kalan kullanıcıları ilgili Security Group içinden çıkarma işlemi yapıyor.

Deny logon locally
Deny logon locally
Deny logon locally

15- Dilerseniz, ilgili PowerShell Script'in Trigger tarih ve saatibi beklemeden de Trigger üzerinde sağ tıklayarak Run seçeneğini seçip, Script'in menuel olarak çalıştırılmasını da sağlayabilirsiniz.

Deny logon locally

16- Örneğin Fırat Boyan isimli kullanıcı yıllık izine çıkmış olsun. Anlattığım tüm bu süreçlerden işetildikten sonra kullanıcı hesabı ile logon olunmaya çalışıldığında, Logon işleminin Group Policy üzerindeki kısıtlama sayesinde yapıladığını görebiliyoruz.

Deny logon locally
Deny logon locally

Faydalı olması dileğiyle...


Her türlü görüş ve önerilerinizi aşağıdaki yorum panelinden bırakabilir, kafanıza takılanları veya merak ettiklerinizi sorabilirsiniz.



Yazar Hakkında

firatboyan.com


1985 yılında Alanya'da doğdum. İlk, orta ve lise öğrenimimi Alanya'da tamamladım. Liseden mezun olduktan sonra Akdeniz Üniversitesi Bilgisayar Teknolojisi Ön Lisans programına yerleştim ve bu programdan mezun oldum. Ön Lisans programından mezun olduktan bir süre sonra Dikey Geçiş Sınavı (DGS) ile İstanbul Teknik Üniversitesi (İTÜ) Bilgisayar Mühendisliği Lisans programına yerleştim. 2003 yılından beri Bilgi Teknolojileri sektöründe Sistem ve Network alanlarında çalışıyorum. Bir çok firma bünyesinde farklı projelerde yer alarak bu alanda yıllar içinde ciddi bir bilgi birikimi ve deneyimler kazandım. Bilgi Teknolojileri sektöründeki profesyonel çalışma hayatımın uzunca bir dönemini entegratör firma bazında, ağılıklı olarak Microsoft ürünleri üzerine danışman olarak sürdürüyor ve yüksek seviyeli projeler geliştiriyorum. Uzunca bir süredir de Türkiye'nin en önde gelen entegratör firması olan Data Market bünyesinde Senior Cloud Engineer olarak çalışıyorum. Ek olarak, 2015 yılında Network Akademi bünyesinde Sistem ve Network Uzmanlık eğitimleri vermeye başladım ve 2017 yılında da eğitmenlik tecrübemi, Microsft Certified Trainer (MCT) ünvanı ile taçlandırdım. Eğitmenlik serüvenime 2021 yılından beri Bilge Adam bünyesinde MCT ünvanı ile devam etmekteyim.

YORUMLAR
Bu makaleye henüz yorum yapılmadı! İlk yorum yapan sen ol.
Her türlü görüş ve önerilerinizi aşağıdaki yorum panelinden bırakabilir, kafanıza takılanları veya merak ettiklerinizi sorabilirsiniz.

   
   
  750 karakter yazabilirsiniz.
 
Captcha
Güvenlik kodunu BÜYÜK harflerle giriniz.
* Yorumlar, onaylandıktan sonra yayınlanmaktadır.
* E-posta, yorum onay bildirimi için gereklidir. Yayınlanmaz.