Bagikan melalui


Pertimbangan Keamanan JEA

JEA membantu Anda meningkatkan postur keamanan dengan mengurangi jumlah administrator permanen pada komputer Anda. JEA menggunakan konfigurasi sesi PowerShell untuk membuat titik masuk baru bagi pengguna untuk mengelola sistem. Pengguna yang membutuhkan peningkatan, tetapi tidak terbatas, akses ke komputer untuk melakukan tugas administratif dapat diberikan akses ke titik akhir JEA. Karena JEA memungkinkan pengguna ini menjalankan perintah administratif tanpa memiliki akses administrator penuh, Anda kemudian dapat menghapus pengguna tersebut dari grup keamanan yang sangat istimewa.

akun Run-As

Setiap titik akhir JEA memiliki akun run-as yang ditunjuk untuk menjalankan tindakan pengguna yang terhubung. Akun ini dapat dikonfigurasi dalam file konfigurasi sesi, dan akun yang Anda pilih memiliki pengaruh signifikan terhadap keamanan titik akhir Anda.

Akun virtual adalah cara yang direkomendasikan untuk mengonfigurasi akun run-as . Akun virtual adalah akun lokal sementara satu kali yang dibuat untuk digunakan pengguna yang terhubung selama durasi sesi JEA mereka. Segera setelah sesi mereka dihentikan, akun virtual dihancurkan dan tidak dapat digunakan lagi. Pengguna yang menyambungkan tidak tahu kredensial untuk akun virtual. Akun virtual tidak dapat digunakan untuk mengakses sistem melalui cara lain seperti Desktop Jarak Jauh atau titik akhir PowerShell yang tanpa batasan.

Secara default, akun virtual adalah anggota grup Administrator lokal di komputer. Keanggotaan ini memberi mereka hak penuh untuk mengelola apa pun pada sistem, tetapi tidak ada hak untuk mengelola sumber daya di jaringan. Ketika pengguna terhubung ke komputer lain dari sesi JEA, konteks pengguna adalah dari akun komputer lokal, bukan akun virtual.

Pengontrol domain adalah kasus khusus karena tidak ada grup Administrator lokal. Sebagai gantinya, akun virtual milik Admin Domain dan dapat mengelola layanan direktori pada pengendali domain. Identitas domain masih dibatasi untuk digunakan pada pengontrol domain tempat sesi JEA dibuat. Akses jaringan apa pun tampaknya berasal dari objek komputer pengendali domain sebagai gantinya.

Dalam kedua kasus, Anda dapat menetapkan akun virtual ke grup keamanan tertentu, terutama ketika tugas dapat dilakukan tanpa hak istimewa administrator lokal atau domain. Jika Anda sudah memiliki grup keamanan yang ditentukan untuk administrator Anda, berikan keanggotaan akun virtual ke grup tersebut. Keanggotaan grup untuk akun virtual terbatas pada grup keamanan lokal di stasiun kerja dan server anggota. Pada pengendali domain, akun virtual harus menjadi anggota grup keamanan domain. Setelah akun virtual ditambahkan ke satu atau beberapa grup keamanan, akun tersebut tidak lagi termasuk dalam grup default (administrator lokal atau domain).

Tabel berikut ini meringkas opsi konfigurasi yang mungkin dan izin yang dihasilkan untuk akun virtual:

Jenis komputer Konfigurasi akun virtual grup Konteks pengguna lokal Konteks pengguna jaringan
Pengendali Domain Bawaan Pengguna domain, anggota <DOMAIN>\Domain Admins Akun komputer
Pengendali Domain Grup domain A dan B Pengguna domain, anggota dari <DOMAIN>\A, <DOMAIN>\B Akun komputer
Server anggota atau stasiun kerja Bawaan Pengguna lokal, anggota BUILTIN\Administrators Akun komputer
Server anggota atau stasiun kerja Grup lokal C dan D Pengguna lokal, anggota <COMPUTER>\C dan <COMPUTER>\D Akun komputer

Saat Anda melihat audit keamanan dan log peristiwa Aplikasi, Anda melihat bahwa setiap sesi pengguna JEA memiliki akun virtual yang unik. Akun unik ini membantu Anda melacak tindakan pengguna di titik akhir JEA kembali ke pengguna asli yang menjalankan perintah. Nama akun virtual mengikuti format WinRM Virtual Users\WinRM_VA_<ACCOUNTNUMBER>_<DOMAIN>_<sAMAccountName> Misalnya, jika Alice pengguna di domain Contoso memulai ulang layanan di titik akhir JEA, nama pengguna yang terkait dengan peristiwa manajer kontrol layanan apa pun adalah WinRM Virtual Users\WinRM_VA_1_contoso_alice.

Akun layanan yang dikelola grup (gMSA) berguna ketika server anggota perlu memiliki akses ke sumber daya jaringan dalam sesi JEA. Misalnya, ketika titik akhir JEA digunakan untuk mengontrol akses ke layanan REST API yang dihosting di komputer yang berbeda. Sangat mudah untuk menulis fungsi untuk memanggil REST API, tetapi Anda memerlukan identitas jaringan untuk mengautentikasi dengan API. Menggunakan akun layanan yang dikelola grup memungkinkan lompatan kedua sambil mempertahankan kontrol di mana komputer dapat menggunakan akun tersebut. Keanggotaan grup keamanan (lokal atau domain) gMSA menentukan izin yang efektif untuk akun gMSA.

Ketika titik akhir JEA dikonfigurasi untuk menggunakan gMSA, tindakan semua pengguna JEA tampaknya berasal dari gMSA yang sama. Satu-satunya cara untuk melacak tindakan kembali ke pengguna tertentu adalah dengan mengidentifikasi serangkaian perintah yang dijalankan dalam transkrip sesi PowerShell.

Kredensial pass-through digunakan saat Anda tidak menentukan akun jalankan-sebagai. PowerShell menggunakan kredensial pengguna yang menyambungkan untuk menjalankan perintah di server jarak jauh. Untuk menggunakan kredensial pass-through, Anda harus memberikan akses langsung pengguna yang terhubung ke grup manajemen istimewa. Konfigurasi ini TIDAK disarankan untuk JEA. Jika pengguna yang terhubung sudah memiliki hak istimewa administrator, mereka dapat melewati JEA dan mengelola sistem menggunakan metode akses lainnya.

Akun run-as standar memungkinkan Anda menentukan akun pengguna di bawah mana seluruh sesi PowerShell dijalankan. Konfigurasi sesi menggunakan akun run-as tetap (menggunakan parameter -RunAsCredential) tidak mendukung JEA. Definisi peran tidak lagi berfungsi seperti yang diharapkan. Setiap pengguna yang berwenang untuk mengakses titik akhir diberi peran yang sama.

Anda tidak boleh menggunakan RunAsCredential pada titik akhir JEA karena sulit untuk melacak tindakan kembali ke pengguna tertentu dan tidak memiliki dukungan untuk memetakan pengguna ke peran.

ACL Titik Akhir WinRM

Setiap titik akhir JEA, seperti halnya titik akhir jarak jauh PowerShell reguler, memiliki daftar kontrol akses terpisah (ACL) yang mengatur siapa yang dapat melakukan otentikasi dengan titik akhir JEA. Jika dikonfigurasi dengan tidak benar, pengguna tepercaya mungkin tidak dapat mengakses titik akhir JEA, dan pengguna yang tidak tepercaya mungkin memiliki akses. WinRM ACL tidak memengaruhi pemetaan pengguna ke peran JEA. Pemetaan dikontrol oleh bidang RoleDefinitions dalam file konfigurasi sesi yang digunakan untuk mendaftarkan titik akhir.

Secara default, ketika titik akhir JEA memiliki beberapa kemampuan peran, WinRM ACL dikonfigurasi untuk memungkinkan akses ke semua pengguna yang dipetakan. Misalnya, sesi JEA yang dikonfigurasi menggunakan perintah berikut memberikan akses penuh ke CONTOSO\JEA_Lev1 dan CONTOSO\JEA_Lev2.

$roles = @{ 'CONTOSO\JEA_Lev1' = 'Lev1Role'; 'CONTOSO\JEA_Lev2' = 'Lev2Role' }
New-PSSessionConfigurationFile -Path '.\jea.pssc' -SessionType RestrictedRemoteServer -RoleDefinitions $roles -RunAsVirtualAccount
Register-PSSessionConfiguration -Path '.\jea.pssc' -Name 'MyJEAEndpoint'

Anda dapat mengaudit izin pengguna dengan cmdlet Get-PSSessionConfiguration .

Get-PSSessionConfiguration -Name 'MyJEAEndpoint' | Select-Object Permission
Permission
----------
CONTOSO\JEA_Lev1 AccessAllowed
CONTOSO\JEA_Lev2 AccessAllowed

Untuk mengubah pengguna mana yang memiliki akses, jalankan baik Set-PSSessionConfiguration -Name 'MyJEAEndpoint' -ShowSecurityDescriptorUI untuk perintah interaktif atau Set-PSSessionConfiguration -Name 'MyJEAEndpoint' -SecurityDescriptorSddl <SDDL string> untuk memperbarui izin. Pengguna memerlukan setidaknya hak Panggil untuk mengakses titik akhir JEA.

Anda dapat membuat titik akhir JEA yang tidak memetakan peran yang ditentukan ke setiap pengguna yang memiliki akses. Pengguna ini dapat memulai sesi JEA, tetapi hanya memiliki akses ke cmdlet default. Anda dapat mengaudit izin pengguna di titik akhir JEA dengan menjalankan Get-PSSessionCapability. Untuk informasi selengkapnya, lihat Audit dan Pelaporan di JEA.

Peran hak istimewa terkecil

Saat merancang peran JEA, penting untuk diingat bahwa akun layanan virtual dan yang dikelola grup yang berjalan di belakang layar dapat memiliki akses tidak terbatas ke komputer lokal. Kemampuan peran JEA membantu membatasi perintah dan aplikasi yang dapat dijalankan dalam konteks istimewa tersebut. Peran yang dirancang secara tidak benar dapat memungkinkan perintah berbahaya yang dapat memungkinkan pengguna untuk keluar dari batas-batas JEA atau mendapatkan akses ke informasi sensitif.

Misalnya, pertimbangkan entri kemampuan peran berikut:

@{
    VisibleCmdlets = 'Microsoft.PowerShell.Management\*-Process'
}

Kemampuan peran ini memungkinkan pengguna untuk menjalankan cmdlet PowerShell apa pun yang berisi kata benda Process dari modul Microsoft.PowerShell.Management. Pengguna mungkin perlu mengakses cmdlet seperti Get-Process untuk melihat aplikasi apa yang berjalan pada sistem dan Stop-Process untuk mematikan aplikasi yang tidak merespons. Namun, entri ini juga memungkinkan Start-Process, yang dapat digunakan untuk memulai program arbitrer dengan izin administrator penuh. Program tidak perlu diinstal secara lokal pada sistem. Pengguna yang terhubung dapat memulai program dari berbagi file yang memberikan hak istimewa administrator lokal pengguna, menjalankan malware, dan banyak lagi.

Versi yang lebih aman dari kemampuan peran yang sama ini akan terlihat seperti:

@{
    VisibleCmdlets = 'Microsoft.PowerShell.Management\Get-Process',
                     'Microsoft.PowerShell.Management\Stop-Process'
}

Hindari menggunakan simbol pengganti dalam fitur peran. Pastikan untuk mengaudit izin pengguna yang efektif secara teratur untuk melihat perintah mana yang dapat diakses oleh pengguna. Untuk informasi selengkapnya, lihat bagian Periksa hak efektif dari artikel Audit dan Pelaporan pada JEA .

Rekomendasi praktik terbaik

Berikut ini adalah rekomendasi praktik terbaik untuk memastikan keamanan titik akhir JEA Anda:

Membatasi penggunaan dan kemampuan penyedia PowerShell

Tinjau bagaimana penyedia yang diizinkan digunakan untuk memastikan bahwa Anda tidak membuat kerentanan dalam sesi yang dikonfigurasi.

Peringatan

Jangan mengizinkan penyedia FileSystem. Jika pengguna dapat menulis ke bagian mana pun dari sistem file, dimungkinkan untuk sepenuhnya melewati keamanan.

Jangan izinkan penyedia Sertifikat . Dengan penyedia diaktifkan, pengguna dapat memperoleh akses ke kunci privat yang disimpan.

Jangan izinkan perintah yang dapat membuat runspace baru.

Peringatan

*-Job cmdlet dapat membuat runspace baru tanpa pembatasan.

Jangan izinkan Trace-Command cmdlet.

Peringatan

Menggunakan Trace-Command memasukkan semua perintah yang terlacak ke dalam sesi.

Jangan membuat implementasi proksi Anda sendiri untuk perintah yang dibatasi.

PowerShell memiliki sekumpulan perintah proksi untuk skenario perintah terbatas. Perintah proksi ini memastikan bahwa parameter input tidak dapat membahayakan keamanan sesi. Perintah berikut ini memiliki proksi terbatas:

  • Exit-PSSession
  • Get-Command
  • Get-FormatData
  • Get-Help
  • Measure-Object
  • Out-Default
  • Select-Object

Jika Anda membuat implementasi sendiri dari perintah ini, Anda mungkin secara tidak sengaja mengizinkan pengguna untuk menjalankan kode yang dilarang oleh perintah proksi JEA.

JEA tidak melindungi terhadap administrator

Salah satu prinsip inti JEA adalah memungkinkan nonadministrator untuk melakukan beberapa tugas administratif. JEA tidak melindungi dari pengguna yang sudah memiliki hak istimewa administrator. Pengguna yang termasuk Admin Domain, Administrator lokal, atau grup dengan hak istimewa lainnya dapat menghindari perlindungan JEA dengan cara lain. Misalnya, mereka dapat masuk dengan RDP, menggunakan konsol MMC jarak jauh, atau terhubung ke titik akhir PowerShell yang tidak dibatasi. Selain itu, administrator lokal pada sistem dapat memodifikasi konfigurasi JEA untuk menambahkan lebih banyak pengguna atau mengubah kemampuan peran untuk memperluas cakupan apa yang dapat dilakukan pengguna dalam sesi JEA mereka. Penting untuk mengevaluasi izin yang diperluas pengguna JEA Anda untuk melihat apakah ada cara lain untuk mendapatkan akses istimewa ke sistem.

Selain menggunakan JEA untuk pemeliharaan sehari-hari, biasanya ada sistem manajemen akses istimewa just-in-time. Sistem ini memungkinkan pengguna yang ditunjuk untuk sementara menjadi administrator lokal hanya setelah mereka menyelesaikan alur kerja yang mendokumentasikan penggunaan izin tersebut.