Kimliği doğrulanmış kullanıcı acil oturumu kapatmayı zorla (acil durum)


24

Active Directory'de bir kullanıcının oturum açmasını önlemek istiyorsanız, hesaplarını devre dışı bırakabilir veya şifrelerini sıfırlayabilirsiniz. Ancak, bir iş istasyonuna zaten giriş yapmış bir kullanıcınız varsa ve bunların herhangi bir kaynağa mümkün olduğunca hızlı bir şekilde erişmelerini engellemeniz gerekiyorsa - bunu nasıl yapıyorsunuz? Bir işçinin derhal yürürlüğe girdiği bir acil durumdan bahsediyorum ve derhal ağdan kilitlenmeleri durumunda tahrip olma riski vardır.

Birkaç gün önce benzer bir davayla karşılaştım. İlk başta nasıl davranacağımdan emin değildim. Kullanıcının ağ paylaşımlarına erişimini engellemek kolaydır, ancak bu yeterli değildir. Sonunda, hedef bilgisayarı Stop-Computer -ComputerName <name> -ForcePowerShell cmdlet'i ile kapattım ve benim durumumda bu sorunu çözdü. Bununla birlikte, bazı durumlarda, en iyi seçenek bu olmayabilir, örneğin, kesmeniz gereken kullanıcı birkaç iş istasyonunda veya önemli bir hizmet sunan bir bilgisayarda oturum açmışsa ve bunu kapatamazsanız söyleyin.

Tüm iş istasyonlarından anında kullanıcı kapatma işlemini uzaktan zorlamak için mümkün olan en iyi çözüm nedir? Active Directory'de bu mümkün mü?


5
Güzel soru ve cevapları görmekle ilgileniyorum. Ancak, böyle bir durumda, işten çıkarılan çalışan, işten çıkarılma haberi alındıktan sonra binadan eşlik edilene kadar% 100'lük bir İK eskortu ile olmaz mı?
AÇAA

Evet, olmalılar. Ancak, bu konuyu çözmekle ilgileniyorum Active Directory-bilge :)
Erathiel

Güvenliği çağırın ve fiziksel olarak kişinin bulunduğu yere gitmelerini sağlayın mı? Ağınızın dışındalarsa, bunları güvenlik duvarınızda engelleyin. Powershell betiğinizi, o kullanıcı hesabıyla çalışan tüm bilgisayarlarınızdaki işlemleri öldürmek için kullanın.
Zoredache

Yanıtlar:


20

En iyi çözüm: Bir güvenlik görevlisi kişiye eşlik eder ...

İkinci en iyi çözüm:

  1. İlk önce, oturum numarasını qwinsta: QWINSTA / server: computername ile kontrol edin.
  2. Oturum kimliğini not alın.
  3. Ardından logoff komutunu kullanın: LOGOFF sessionID / server: computername.
C:\>qwinsta /?
Display information about Remote Desktop Sessions.

QUERY SESSION [sessionname | username | sessionid]
              [/SERVER:servername] [/MODE] [/FLOW] [/CONNECT] [/COUNTER] [/VM]

  sessionname         Identifies the session named sessionname.
  username            Identifies the session with user username.
  sessionid           Identifies the session with ID sessionid.
  /SERVER:servername  The server to be queried (default is current).
  /MODE               Display current line settings.
  /FLOW               Display current flow control settings.
  /CONNECT            Display current connect settings.
  /COUNTER            Display current Remote Desktop Services counters information.
  /VM                 Display information about sessions within virtual machines.


C:\>logoff /?
Terminates a session.

LOGOFF [sessionname | sessionid] [/SERVER:servername] [/V] [/VM]

  sessionname         The name of the session.
  sessionid           The ID of the session.
  /SERVER:servername  Specifies the Remote Desktop server containing the user
                      session to log off (default is current).
  /V                  Displays information about the actions performed.
  /VM                 Logs off a session on server or within virtual machine. The unique ID of the session needs to be specified.

Bunun için basit bir toplu senaryo yazdım. Ben unixtoolsde yolda bazı gerektirir psexec.

@ECHO OFF
:: Script to log a user off a remote machine
::
:: Param 1: The machine
:: Param 2: The username

psexec \\%1 qwinsta | grep %2 | sed 's/console//' | awk '{print $2}' > %tmp%\sessionid.txt
set /p sessionid=< %tmp%\sessionid.txt
del /q %tmp%\sessionid.txt
psexec \\%1 logoff %sessionid% /v

2
Bu iki komutu otomatik bir toplu iş / powershell dosyasında birleştirmek mümkün mü? Tüm oturumları kapatmak için hızlı bir komut dosyası çalıştırmak çok yararlı olabilir.
EtherDragon

1
Bir kullanıcının bağlı olduğu tüm bilgisayarların bir listesini elde etmek mümkün mü?
Hiçbir ŞeyBenim imkansız

@HayırBaşsız - Bunu bulma yöntemim, kullanıcılar sunucuya yönlendirilmiş bir profil olduğu için dosya sunucuma bakmak, orada açık dosya paylaşım oturumları için bakıyorum.
ETL

@NothingsImpossible kullanıyorum Bunu başarmak eğilimindedir PsLoggedOn
BE77Y

5

Tamamen AD tabanlı değil, ancak ne istersen yapmalı.

Hesabı devre dışı bırak veya süresi geç

import-module activedirectory
set-aduser -identity "username" -accountexperationdate "12:09 pm"

veya

set-aduser -identity "username" -enabled $false

Ardından kullanıcıyı makineden kapatın

shutdown -m "\\computername" -l

Kullanıcı oturumunu kapatmanın başka bir yolu, yerleşik bir windows yardımcı programını yönetim komut isteminden kullanmaktır.

logoff 1 /SEVER:computername

Bu, uzak bilgisayardaki oturum kimliği 1 oturumunu kapatır. Oturum kimliğini bilmiyorsanız (1 varsayılandır) o zaman bulmak için uzak makineye karşı quser kullanabilirsiniz.


1
Bu, makineyi kapatacak, kullanıcı oturumunu kapatmayacak, düşüncenin ne olacağını sordu.
slybloty

2
Lütfen beni yanlış anlamayın ama cevabınız tam olarak istemediğim şeydi ve soruma hepsini ekledim: hesabı devre dışı bırakmak / sonlandırmak veya şifreyi değiştirmek kullanıcı oturumunu kapatmaya zorlamıyor, yalnızca giriş yapmasını önlüyor OP'de tarif edilen durumda hiçbir yararı yoktur.
Erathiel

3
shutdownVarsayılan olarak komut aslında kapatıldı değil, kullanıcı kapalı günlükleri .
Michael Hampton

Kullanıcıyı kapatmak için alternatif bir yöntem eklendi, bunun aradığınızı daha fazla olup olmadığını bana bildirin. Düzenleme: ETL'in cevabını görmedim, bu yüzden beni yumruk atması için +1 verdi.
David V

3
İşimdeki politika tipik olarak şöyle olur: kişi bir "toplantıya" (sonlandırma) çağrılır, toplantıda hesap devre dışı bırakılır ve oturum uzaktan kapatılır (masaüstlerinin tümü güvenli VNC sunucularına kurulur).
Avery Payne

4

Kullanıcının oturumunu wmic ile uzaktan kilitleyebilirsiniz:

1 - İlk önce kullanıcı şifresini değiştirin:

C:\> wmic /node:[IPaddr] /user:[Admin] /password:[password] process call
  create "net user [user] [NewPassword]"

2 - Ardından, hesabı devre dışı bırakın:

C:\> wmic /node:[IPaddr] /user:[Admin] /password:[password] process call
  create "net user [user] /active:no"

3 - Sonra kullanıcı oturumunu kesin:

C:\> wmic /node:[IPaddr] /user:[Admin] /password:[password] process call
  create "tsdiscon"

Bunun bir katma değeri var, çünkü mevcut kullanıcı oturumunu kaybetmeyeceksiniz ve bu nedenle iş istasyonlarını açtığınızda kapıya kadar eşlik etmeden önce kötü bir şey yapıp yapamayacağını görebileceksiniz.

Tüm krediler Komut Satırı Kung Fu Blog'a . Orada bir sürü çılgın güvenlik / adli tıp ile ilgili şeyler var!

GÜNCELLEME: İlk iki adım yerel kullanıcılara yöneliktir, aktif bir dizin ortamında aslında daha kolaydır, hesabı devre dışı bırakın ve AD'deki şifreyi değiştirin ve ardından kötü niyetli kullanıcı IP adresine karşı 3. komutu çalıştırın.


Ne yazık ki komut wmic..."tsdiscon" sadece XP'de çalışıyor . Vista + 'da bu komut Konsol oturumunun bağlantısını kesemez.
Monica

0

Oturum açma saatlerini, kullanıcı özelliklerinde tüm saatler boyunca reddedilen oturum açma olarak değiştirin. Bu hemen giriş yaptıkları yerden çıkış yapacaktır.

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.