Klist: Kerberos Ticket’i oturum kapatmadan temizleme

Okuma süresi - 5 dk.


Tüm Windows sistem yöneticileri, bir bilgisayar veya bir kullanıcıyı Active Directory security group’a eklendikten sonra, domain resources’lere veya yeni GPO’lara erişmek için yeni izinlerin hemen uygulanmadığını bilir. Grup üyeliğini güncellemek ve atanmış izinleri veya grup ilkelerini uygulamak için domain grubuna bir bilgisayar hesabı eklenmişse bilgisayarı yeniden başlatmanız, kullanıcı eklenmişse oturum kapatma ve oturum açma işlemi gerçekleştirmeniz gerekir. Bunun nedeni, AD grubu üyeliklerinin, sistem başlangıcında meydana gelen veya kullanıcı oturum açma sırasında kimlik doğrulaması yapan bir Kerberos ticket oluşturulduğunda güncellenmesidir.

Bazı durumlarda, bilgisayarın yeniden başlatılması veya kullanıcı oturumunun kapatılması çalışma esnasında hemen gerçekleştirilemez. Fakat aynı zamanda yeni izinleri ihtiyacınız var, yeni grup ilkelerine erişmeniz veya uygulamanız gerekiyor. Bu gibi durumlarda, klist.exe aracını kullanarak Active Directory gruplarındaki hesap üyeliğini bilgisayar yeniden başlatmadan veya kullanıcı yeniden oturum açmadan güncelleştirebilirsiniz.

Not→ Bu makalede açıklanan yöntem yalnızca Kerberos Authentication destekleyen network hizmetleri için çalışır. Yalnızca NTLM Authentication ile çalışan hizmetler için kullanıcının oturumu kapatması ve oturum açması veya Windows’u yeniden başlatma gerekir.

Aşağıdaki komutları kullanarak kullanıcının üyesi olduğu grupların listesini komut isteminde alabilirsiniz.

whoami /groups veya gpresult /r

kerberos-ticket

Bir kullanıcının üyesi olduğu grupların listesi “The user is a part of the following security groups.” bölümünde görüntülenir.

Geçerli Kerberos tickets’leri klist.exe aracını kullanarak yeniden başlatmadan sıfırlayabilirsiniz. Klist, Windows 7’den başlayan yerleşik bir sistem aracıdır. Windows XP/Windows Server 2003 için klist, Windows Server 2003 Resource Kit Tools‘un bir parçası olarak yüklenir.

Kerberos Tickets nasıl yenilenir?

Bir bilgisayara ait Kerberos ticket’lerinin tüm önbelleği sıfırlamak (local system) ve bilgisayarın AD gruplarındaki üyeliğini güncellemek için, komut satırında aşağıdaki komutu çalıştırmanız gerekir.

klist -li 0:0x3e7 purge

klist

Not→ 0x3e7, local bilgisayarın oturumuna işaret eden özel bir tanımlayıcıdır.

Komutu çalıştırıp grup ilkelerini güncelledikten sonra, Security Filtering yoluyla AD grubuna atanan tüm grup ilkeleri bilgisayara uygulanır.

Domain ortamınızda LSA access restriction policy yapılandırılmışsa (örneğin, SeDebugPrivilege kullanımını kısıtlayan Debug Program policy) veya diğer güvenlik ilkeleri, bazı durumlarda klist -li 0: 0x3e7 purge komutu çalıştırdığınızda şöyle bir hata alabilirsiniz: “Error calling API LsaCallAuthenticationPackage”

Current LogonId is 0:0x3d2de2
Targeted LogonId is 0:0x3e7
*** You must run this tool while being elevated, and you must have TCB or be a local admin.***
klist failed with 0xc0000001/-1073741823: {Operation Failed}
The requested operation was unsuccessful.

Bu durumda, bilgisayarınızın Kerberos ticket’ini temizleyebilirsiniz. Bunu yapmanın en kolay yolu psexec aracıdır.

psexec -s -i -d cmd.exe – Local System hesabıyla cmd komutunu çalıştırın

klist purge – bilgisayar bileti sıfırlama

gpupdate /force – GPO’yu güncelleyin

Klist: Kullanıcı Kerberos Ticket’i oturum kapatmadan temizleme

Kullanıcı oturumunda, atanan Active Directory security gruplarını güncelleştirmek için başka bir komut kullanılır. Örneğin, paylaşılan bir ağ klasörüne erişmek için Active Directory grubuna kullanıcı hesabı eklenmiştir. Kullanıcı bu paylaşılan klasöre oturumu kapatmadan erişemez.

Kullanıcının Kerberos ticket’ini yenilemek için aşağıdaki komutu kullanabilirsiniz.

klist purge

Current LogonId is 0:0x5e3d69
Deleting all tickets:
Ticket(s) purged!

kerberos ticket purged

Güncellenmiş grup listesini görmek için, runas kullanarak yeni bir komut istemi çalıştırmanız gerekir.

RDS sunucusunda, aşağıdaki PowerShell komutunu kullanarak tüm kullanıcı oturumları için Kerberos ticket’i bir kerede sıfırlayabilirsiniz.

Get-WmiObject Win32_LogonSession | Where-Object {$_.AuthenticationPackage -ne ‘NTLM’} | ForEach-Object {klist.exe purge -li ([Convert]::ToString($_.LogonId, 16))}

Bir kullanıcının paylaşılan bir klasöre erişmek için AD grubuna eklendiğini varsayalım. FQDN adını kullanarak erişmeye çalışın. Bu noktada, kullanıcıya yeni bir Kerberos ticket düzenlenir. TGT biletinin güncellendiğini aşağıdaki komutla kontrol edebilirsiniz.

klist tgt

Start Time değerine bakabilirsiniz.

start time

AD grubu üzerinden erişim izni verilen paylaşımlı klasör, kullanıcı logoff/login olmadan açılacaktır.

whoami/all komutunun çıktısına bakarak kullanıcının oturumu kapatmadan yeni bir TGT aldığını kontrol edebilirsiniz.

Security grubu üyeliğini bu şekilde güncellemenin yalnızca Kerberos’u destekleyen hizmetler için geçerli olacağını unutmayın. NTLM kimlik doğrulaması olan hizmetlerde, token güncellemek için bilgisayarın yeniden başlatılması veya kullanıcı oturumunun kapatılması gerekir.