某伺服器最近由Windows 2003升級到Windows 2008 R2,原本複製檔案到該伺服器的排程發生存取被拒錯誤,經偵察獲得以下線索:

  1. 主症狀為使用該伺服器的本機管理者帳號(該伺服器未加入網域)從遠端機器存取其C$、D$等系統內建網路分享出現Access Denied
  2. 同一排程作業在升級Windows 2008 R2前可行
  3. 確定帳號密碼無誤,因為使用同一帳號可以Terminal Service登入問題伺服器
  4. 若另開一個網路分享並授與該帳號讀取權限,可順利存取無誤

同事提供情資一則,原來這是Windows Vista起(亦適用Windows 2008+)加入的新政策-UAC Remote Restriction(詳情請參考KB951016):

概念很簡單,啟用UAC之後,每次動用管理者權限都要額外提示及確認,若假冒來自遠端的存取就能繞過UAC直接以管理者權限存取機器,有可能淪為安全漏洞。故Windows預設會一併啟用UAC Remote Restriction,落實以下原則:

本機帳號 (Security Account Manager,SAM使用者帳號)

當使用隸屬本機管理者群組(Local Administrators)帳號連上管理用的網路分享,如:\\ remotecomputer \Share$,該連線將不會被賦與完整管理者權限,如需使用管理權限執行作業,必須以遠端協助(Remote Assistance)或遠端桌面(Remote Desktop)方式互動式登入。

網域使用者帳號 (Active Directory 使用者帳號)

當使用AD帳號遠端連線管理用的網路分享,若該帳號屬於本機管理者群組,則不受上述UAC Remote Restriction限制。

用Windows 2008跟C$/D$做法已好一段時間,之前一直沒遇到問題是因為都是用AD帳號,這台機器性質特殊沒加入網域,只能使用本機管理者帳號,一升級到Windows 2008立刻爆炸。

解決方法有兩種:

  1. 避用 C$、D$,另開網路分享滿足檔案傳輸需求,如此可繼續享有UAC Remote Restriction的保護(建議做法)
  2. 透過Registry關閉UAC Remote Restriction,位置:HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System\LocalAccountTokenFilterPolicy REG_DWORD –> 1。(安全性較差,不建議)

Comments

# by 狐狸俊

to 黑大: 我一台測試機是 Windows Server 2008 R2 Enterprise,沒加入網域,Registry 沒有你說的 LocalAccountTokenFilterPolicy,然後 UAC 也是打開的,也可以存取 C$ D$,不曉得是什麼原因可以 ~_~"

# by Chung

To 狐狸俊 我想你大概用的是 administrator 這個帳號吧, Administrator 這個帳號擁有最高權限, 預設狀態下不受UAC控管,所以也不會有 UAC Remote Restriction 所以就可以直接遠端存取 c$, 除非另外再啟用管理員核准模式

# by 狐狸俊

to 黑大: 我是用 administrator 沒錯,我瞭解了,謝謝你。

# by Jeffrey

to 狐狸俊, 回覆你的是網友Chung,要謝謝他 XD to Chung, 謝謝補充。 另外再補充一點,Windows 8+(客戶端作業系統)預設停用administrator帳號,需額外手續啟用。

# by 狐狸俊

to Chung: 感謝! ^_^

Post a comment