Paksa pengguna logoff langsung terotentikasi (kasus darurat)

24

Di Active Directory jika Anda ingin mencegah pengguna masuk Anda dapat menonaktifkan akun mereka atau cukup mengatur ulang kata sandi mereka. Namun, jika Anda memiliki pengguna yang sudah masuk ke workstation dan Anda perlu mencegah mereka mengakses sumber daya apa pun secepat mungkin - bagaimana Anda melakukannya? Saya berbicara tentang situasi darurat di mana seorang pekerja dipecat dengan efek langsung dan ada risiko mereka mendatangkan malapetaka jika mereka tidak segera dikunci dari jaringan.

Beberapa hari yang lalu saya dihadapkan dengan kasus serupa. Awalnya saya tidak yakin bagaimana harus bertindak. Mencegah akses pengguna ke jaringan berbagi itu mudah tetapi ini tidak cukup. Akhirnya, saya mematikan komputer target dengan Stop-Computer -ComputerName <name> -Forcecmdlet PowerShell dan dalam kasus saya ini memecahkan masalah. Namun, dalam beberapa kasus ini mungkin bukan pilihan terbaik, katakanlah jika pengguna yang Anda perlukan untuk logon masuk di beberapa workstation atau di komputer yang menyediakan layanan penting dan Anda tidak bisa mematikannya.

Apa solusi terbaik untuk memaksakan logoff pengguna langsung dari semua workstation? Apakah ini bahkan mungkin di Direktori Aktif?

Erathiel
sumber
5
Pertanyaan bagus, dan saya tertarik melihat jawabannya. Namun, dalam situasi seperti ini, bukankah karyawan yang diberhentikan akan bersama 100% pengawalnya dari saat mereka menerima berita tentang pemberhentian mereka sampai mereka dikawal dari gedung?
EEAA
Ya, tentu mereka seharusnya. Saya, bagaimanapun, tertarik untuk menyelesaikan masalah ini Active Directory-wise :)
Erathiel
Panggil keamanan dan minta mereka secara fisik pergi ke lokasi orang tersebut dan menghapusnya? Jika mereka berada di luar jaringan Anda, blokir mereka di firewall Anda? Gunakan skrip powershell Anda untuk membunuh proses apa pun di semua komputer Anda yang berjalan dengan akun pengguna itu.
Zoredache

Jawaban:

20

Solusi terbaik: Seorang penjaga keamanan mengawal orang keluar ...

Solusi terbaik kedua:

  1. Pertama, periksa nomor sesi dengan qwinsta: QWINSTA / server: computername
  2. Tuliskan ID sesi.
  3. Kemudian gunakan perintah logoff: 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.

Saya menulis naskah batch yang belum sempurna untuk itu. Saya memerlukan beberapa unixtoolsdi jalan juga 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
ETL
sumber
2
Apakah mungkin untuk menggabungkan kedua perintah ini menjadi file batch / PowerShell otomatis? Mungkin sangat berguna untuk menjalankan skrip cepat untuk keluar dari semua sesi.
EtherDragon
1
Apakah mungkin untuk mendapatkan daftar semua komputer yang terhubung dengan pengguna?
Mungkin
@NothingsImpossible - cara saya mengetahuinya adalah dengan melihat file server saya, karena pengguna memiliki profil yang dialihkan ke server, saya mencari sesi berbagi file yang terbuka di sana.
ETL
@NothingsImpossible Saya cenderung untuk mencapai itu menggunakan psloggedon
BE77Y
5

Tidak sepenuhnya berdasarkan AD, tetapi harus melakukan apa yang Anda inginkan.

Nonaktifkan atau kedaluwarsa akun

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

atau

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

Kemudian log off pengguna dari mesin mereka

shutdown -m "\\computername" -l

Cara lain untuk keluar dari pengguna adalah dengan menggunakan utilitas bawaan windows, dari prompt perintah administratif

logoff 1 /SEVER:computername

Ini log dari sesi 1 dari komputer jauh. Jika Anda tidak tahu id sesi (1 adalah default) maka Anda dapat menggunakan quser terhadap mesin jarak jauh untuk menemukannya.

David V
sumber
1
Itu akan mematikan mesin, tidak mengeluarkan pengguna, berpikir, itulah pertanyaannya.
slybloty
2
Tolong jangan salah paham, tetapi jawaban Anda tepat yang tidak saya inginkan dan saya telah memasukkan semua itu dalam pertanyaan saya: menonaktifkan / kedaluwarsa akun atau mengubah kata sandi tidak memaksa pengguna logoff, itu hanya mencegah mereka untuk masuk yang mana tidak ada gunanya dalam kasus yang dijelaskan dalam OP.
Erathiel
3
The shutdownperintah secara default tidak benar-benar ditutup, tapi log off pengguna .
Michael Hampton
Menambahkan metode alternatif untuk mengeluarkan pengguna, beri tahu saya apakah ini lebih mirip dengan yang Anda cari. Sunting: Tidak melihat jawaban ETL, jadi beri dia +1 karena mengalahkan saya.
David V
3
Kebijakan di tempat kerja saya biasanya seperti ini: orang dipanggil ke "rapat" (penghentian), sedangkan pada rapat itu, akun dinonaktifkan dan sesi dikeluarkan dari jarak jauh (desktop semua telah mengamankan server VNC yang diinstal).
Avery Payne
4

Anda dapat mengunci sesi pengguna dari jarak jauh dengan wmic:

1 - Pertama, ubah kata sandi pengguna:

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

2 - Kemudian, nonaktifkan akun:

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

3 - Lalu, lepaskan sesi pengguna:

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

Ini memiliki nilai tambah, karena Anda tidak akan kehilangan sesi pengguna saat ini dan karenanya ketika Anda membuka kunci workstation Anda akan dapat melihat apakah dia mencoba melakukan sesuatu yang buruk sebelum diantar ke pintu.

Semua kredit ke Command Line Kung Fu Blog . Ada banyak hal terkait keamanan / forensik gila di sana!

PEMBARUAN: Dua langkah pertama dimaksudkan untuk pengguna lokal, dalam lingkungan direktori aktif sebenarnya lebih mudah, nonaktifkan akun dan ubah kata sandi dalam AD, lalu jalankan perintah ke-3 terhadap alamat IP pengguna jahat.

Gabriel Talavera
sumber
Sayangnya perintah itu wmic..."tsdiscon" hanya berfungsi di XP . Di Vista + perintah ini tidak dapat memutuskan sesi Konsol.
Saya katakan Reinstate Monica
0

Ubah saja jam masuk untuk masuk ditolak selama semua jam di properti pengguna. Itu akan segera mengeluarkan mereka dari tempat mereka masuk.

Tamu tamu
sumber