Belirli bir kullanıcının belirli bir ayrıcalığa sahip olup olmadığını kontrol edin


16

Bir çift kullanıcı ve ayrıcalık verildiğinde, kullanıcının sunucuda ayrıcalığa sahip olup olmadığını belirlemem gerekir. Kurulumumda aşağıdakiler geçerlidir:

  • Sunucu bir etki alanının parçasıdır, ancak bir etki alanı denetleyicisi değildir
  • Altyapıda güven ilişkisi olan birkaç alan vardır
  • Bazen kullanıcılar (yerel, etki alanı veya farklı bir etki alanından), doğrudan gruba ait olmak yerine, yerel bir gruba ait başka bir grupta (etki alanı veya yerel) olmaları nedeniyle yerel bir gruba ait olabilirler.

Son nokta için örnek senaryo:

  • Kullanıcı1, EtkiAlanıA'daki TeamA grubuna aittir.
  • DomaimA \ TeamA bir DomainB \ SpecialAccess üyesidir
  • DomainB \ SpecialAccess, DomainB \ DomainAdmins üyesidir
  • Son olarak DomainB \ DomainAdmins yerel Yönetici grubuna aittir
  • Yerel Yönetici grubunun SeRemoteInteractiveLogonRight yetkisi var

Şimdi DomainA \ User1 ve SeRemoteInteractiveLogonRight girişinde varsa Evet veya Hayır cevabına ulaşmam gerekiyor. Bu yüzden makinede Yerel Politika'yı açıyorum, ilgilendiğim haklara karşı hangi grupların listelendiğini de not ediyorum, sonra sunucu yöneticilerine gidip grup üyelerine ne olduğunu görüyorum ve sonra bu gruplardaki herhangi bir grubun üyelerini görmem gerekiyor ve bunun gibi.

Daha kolay olabileceğine dair bir his var. AccessChk yardımcı programını bulduğumda gerçekten heyecanlandım Sadece üç dakika sürdüğünü keşfetmemi sağladı, sadece doğrudan ilişkiyi listelediğini keşfettim, böylece bir grup içindeki kullanıcı listelenmeyecek.

Şimdi AccessChk bazı sonuçları nasıl birleştirmek mümkün olacağını tahmin ediyorum böylece bir kullanıcı AccessChk döndüren grupların herhangi birine ait olup olmadığını kontrol edebilirsiniz, ancak tek bir etki alanı değil birkaç buna nasıl yaklaşacağından emin değilim. Ayrıca AccessChk çıktısı bir grup ve bir kullanıcı arasında ayrım yapmıyor gibi görünüyor.

DÜZENLEME : XY sorun tuzağına düşmemek ruhu içinde, gerçekten yapmam gereken, bir grup sunucuda IIS uygulama havuzu kimlikleri olarak kullanılan belirli bir kullanıcı hesabının SeInteractiveLogonRight veya SeRemoteInteractiveLogonRight ayrıcalıklarına sahip olmasını sağlamaktır. IIS bölümü ile ilgili herhangi bir sorunum yok, ancak bir hesabı ayrıcalıklara karşı kontrol etmenin son adımı, kontrol etmek için basit bir yol bulmakta zorlandığım bir şey. Ayrıca kontrolü otomatikleştirmek istiyorum çünkü bu düzenli olarak yapılması gereken bir şey.


6
Bu bir iş gibi geliyor ... Sonuç Politika Seti (RSoP)! technet.microsoft.com/en-us/library/cc758010%28v=WS.10%29.aspx
Davidw

1
@zespri - Cevabım çöp oldu ve sildim. SeInteractiveLogonRight ve SeRemoteInteractiveLogonRight kullanıcı hakları "normal" ayrıcalıklardan farklı şekilde ele alınır ve üzerlerine rapor vermek sorunlu gibi görünmektedir. Senin için bir çözüm bulursam başka bir cevap gönderirim ama şimdilik hiçbir şeyim yok.
Evan Anderson

1
@Davidw - Yerel Güvenlik İlkesi varsayılanlarının çıktıya yansıtılmaması nedeniyle RSoP sorunludur. Bu nedenle, "Yapılandırılmadı" girdileri yalnızca "Yapılandırılmadı" olarak görünür ve Yerel Güvenlik İlkesi tarafından hangi ilkelere hak verildiğini görmezsiniz. Son olarak, Grup İlkesi'nden bir ilkeler listesi alsanız bile, OS işlevselliğini çoğaltmak için grup üyeliklerini (potansiyel olarak etki alanları arası) genişleteceksiniz. Bu aslında beklediğimden çok daha zor bir soru ortaya çıktı.
Evan Anderson

1
@EvanAnderson Kesinlikle! Beni ne kadar süreceğini tahmin etmem istendiğinde, basit bir görev gibi görünüyordu. Ve birkaç gün çalışıp farklı şeyler denedikten sonra ... hiçbir şey. Şu anda planım GetTokenInformation'ı TokenPrivileges token bilgi sınıfı ile pinvoke etmektir . Bu rota şu anda en umut verici görünüyor.
Andrew Savinykh

@zespri - NtOpenProcessToken () muhtemelen belirteci almanın en iyi yoludur. ( Leeholmes.com/blog/2006/07/21/… adresine bir göz atın )
Evan Anderson

Yanıtlar:


1

Erişim belirteçleri haklar hakkında değil, yalnızca ayrıcalıklar hakkında bilgi içerir.

Yapmanız gereken şudur:

  • Uygulama havuzunuza karşılık gelen IIS alt işlemini bulun. Tüm işlemleri çalışan işlem adıyla numaralandırarak ve kimliğe sahip olanı filtreleyerek kolay olması gereken uygulama havuzu kimliğini bildiğinizden. Birden fazla varsa, herhangi birini kullanabilirsiniz.
  • İşlem belirtecindeki TokenPrivilege yerine GetTokenInformation öğesini TokenGroup bilgi sınıfıyla kullanın. Sonuç size kimliğin ait olduğu tüm geçiş gruplarını verecektir . Bu dolaylı olanlar bile demek.
  • Artık bu gruplar arasında geçiş yapabilir ve her birinde LsaEnumerateAccountRights'ı çağırabilir ve bilgileri harmanlayabilirsiniz. Bu size istediğinizi verecektir.

Yukarıdaki, hesap kimliğine karşılık gelen sürecin (ve jetonun) varlığına dayanmaktadır. Senaryonuzda bu bir problem olmamalı. Bunun bir sorun olduğu senaryolarda, Token-Groups hesaplanmış özniteliği için Active Directory aramasını deneyebilir ve kullanabilirsiniz . Bu makalede , bunu nasıl kaldırabileceğinizle ilgili birkaç yaklaşım listelenmektedir.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.