JEA 筆記 - 跨網域認證 / 傳輸加密 / 懶人工具
| | | 0 | |
上篇文章介紹過實現「最小權限原則」的 PowerShell 系統管理安全做法 - JEA (Just Enough Administration),這回講講實務應用可能遇到的幾個小問題。
JEA 伺服器與客戶端同屬一個 AD 網域並使用 AD 帳號登入是最理想最省事的情境,用 Enter-PSSession -ComputerName '<JEA-Server-Name>' -ConfigurationName '<JEA-Endpoint-Name>' 即可連線,Windows 會自己搞定伺服器識別與使用者帳號 Kerberos 身分驗證。
但如果是在工作群組環境或分屬不同網域就麻煩一些,必須將遠端電腦的 IP 位址新增至本機電腦上的 TrustedHosts 清單,或改用 HTTPS 傳輸。參考
從資安角度,改用 HTTPS 傳輸比加入 TrustedHosts 清單安全,能防止中間人攻擊又可保護身分認證過程。但有個觀念要釐清,跨網域應用才需要 HTTPS,若 JEA 伺服器與客戶端在同一網域,網內互打用 HTTP 就夠了,理由是 Kerberos 證驗本身已具防偽功能、WinRM 傳輸訊息原本就有加密 參考,不需特別啟用 HTTPS 多此一舉。因此,一般只有在無網域或跨網域應用時才需啟用 HTTPS。
WinRM 啟用 HTTPS 要設憑證開防火牆有點麻煩,而上篇文章提到的手工建立 .psrc、.pssc、註冊程序也是一長串繁瑣指令,依慣例這種粗活兒當然要寫成懶人工具,我哪有那個耐性慢慢敲?現在有 AI Coding,當個懶人交待幾句便能寫好懶人工具,於是我義無反顧又造了一顆輪子。
昨晚趕 6 月改 Token 計費制前最後的奢華,花一晚上跟 Github Copilot 聊天,我把工具寫好了 - Manage-JEAEndpoint.ps1,還順便生出好精美的使用說明(謝謝 AI,我這輩子不可能有耐性寫出這種文件),提供有需要的同學參考。
總之,有了懶人工具,只需幾行指令就能在 AD 網域伺服器建好一個 NetworkOps JEA 端點,提供列出伺服器網卡與 IP 的功能;而客戶端是台與伺服器素昩平生的電腦 - 我的 PC,透過 HTTPS 5986 Port、輸入帳號密碼認證,成功建立 PSSession 查到網卡資訊。用短短幾行取代原本數十行的複雜操作,感覺超讚~
# == JEA 伺服器端 ==
# 啟用 WinRM HTTPS
.\Manage-JEAEndpoint.ps1 -EnableHttps
# 建立 NetworkOps 的 JEA Endpoint,允許指定 Cmdlet 並指派給 UTOPIA\jeffrey 使用者帳號
.\Manage-JEAEndpoint.ps1 -EndpointName NetworkOps `
-RoleUsers "UTOPIA\jeffrey" `
-CmdletList "Get-NetAdapter", "Get-NetIPAddress" `
-RunAsVirtualAccountGroups "Network Configuration Operators"
# 註冊 NetworkOps 的 JEA Endpoint
.\Manage-JEAEndpoint.ps1 -EndpointName NetworkOps -Register
# == JEA 客戶端 ==
Enter-PSSession -ComputerName PDC `
-ConfigurationName NetworkOps `
-Credential (Get-Credential UTOPIA\jeffrey) `
-UseSSL `
-SessionOption (New-PSSessionOption -SkipCACheck -SkipCNCheck)
伺服器端執行結果:

客戶端執行結果:

就醬,我的 JEA 應用又向前邁進了一步。
Explores practical PowerShell JEA deployment issues, especially cross-domain/workgroup remoting with HTTPS. Introduces a helper script, Manage-JEAEndpoint.ps1, to automate WinRM HTTPS setup, JEA endpoint creation, registration, and secure client connections with minimal commands.
Comments
Be the first to post a comment