Active Directory 中的安全权限Active Directory 可能是个棘手的话题。不仅 Microsoft 默认会在 “用户和计算机” 中把它们隐藏起来,而且也没有内置工具能够让你全面了解权限是如何应用到 AD 的。
在本文中,我将带你了解委派与移除权限的基础知识,使用内置工具查找已委派的权限,–最后提供一个用于扫描 AD 的自定义 PowerShell 脚本。
为什么要进行委派?
想象一下:你是一个大型公司的负责人,旗下有多个部门——财务、HR、销售以及高层管理。假如每个忘记密码的用户都必须打电话给 IT 帮助台,你的电话就会被海量来电淹没。
相反,你可以把权限委派给每个部门的负责人,让他或她能够重置本团队成员的密码。
委派的另一个经典用例是,让员工能够以彼此的身份发送电子邮件——例如使用共享邮箱,或由助理代表其上司发送邮件。
要不要把 Domain Admin 权限给所有人?
你可能会想——好吧,那就把 Domain Admin 权限分别授予各个部门负责人,这样他们在需要时就能重置密码。
虽然从技术上讲这确实成立,但随后他们就能够做任何你能做的事情——包括访问用户数据。 数据泄露 正在形成中!
如何在 AD 中委派权限
当然,正确的做法是使用 委派(Delegation)。这样你就可以分别选择你想授予的权限。
1. 打开 Active Directory Users and Computers 并连接到你最喜欢的测试域。
2. 用鼠标右键单击你希望授予“重置密码”权限的部门 Organisational Unit。
3. 找到“Delegate Control(委派控制)”选项(应是列表中的第一个选项)。单击此选项,然后按“Next(下一步)”。
4. 现在系统会提示你选择要将控制权委派给哪些用户或组——这些就是你希望能够执行某项任务的人员。
强烈建议你为你要委派的每一组权限创建一个安全组(例如:一个用于“Sales – Password Reset Ability”,另一个用于“HR – Password Reset Ability”)。这样,未来你只需要很方便地向这些组添加/移除用户,而不必直接在权限上来回折腾。
5. 继续添加一个组。(在下面的图中,我添加了我们的高层管理团队。)
6. 按“Next(下一步)”,然后选择选项“Reset user passwords and force password change at next logon(重置用户密码,并在下次登录时强制更改密码)”。
7. 按“下一步”,然后点“完成”——你已经完成了!
在 AD 中移除已委派的权限
既然你已经完成了向导,可能会想知道如何确认你确实委派了权限,以及如何再次移除这些权限。
1. 从 Users and Computers 中打开“查看”菜单,并确保选中“高级功能”。
2. 勾选此选项后,当你在 Active Directory 中对对象选择“属性(Properties)”时,将可以看到“安全”选项卡。
右键单击刚才委派了权限的相同 OU,然后选择“属性(Properties)”,再选择“安全”选项卡。
3. 选择“高级(Advanced)”,然后在页面中上下滚动,直到找到你刚刚授予权限的那个组。你应当能在“访问(Access)”下看到“重置密码(Reset Password)”权限。
4. 如果你想移除这个权限,可以先选择它并点击“移除(Remove)”,但请先保持不变,随后点击“取消(Cancel)”。
如你所见,查找已委派的权限非常困难——尤其是当你考虑到,不仅可以将权限委派给 OU,还可以委派给安全组,甚至还能委派给用户对象本身时。
简化 AD 权限分析
了解 Netwrix Access Analyzer 如何在你的 Active Directory 环境中揭示风险
权限狩猎(使用 DSACLS)
那么,你需要考虑的一个噩梦场景是:有人重置了老板的密码,而你必须找出是谁被授权可以执行此操作。(如果你已安装 Netwrix Auditor,你就可以在其中查看,但在此我们先假设你并没有安装。)
1. 在 Users and Computers 中,导航到要检查权限的用户对象。
2. 右键单击并选择“Choose Properties(选择属性)”,然后选择“Attribute Editor(属性编辑器)”
3. 向下滚动,然后双击“distinguishedName”。将此字符串复制下来以备后用。
4. 打开命令提示符,输入“dsacls”,然后粘贴刚刚复制的字符串,并用引号括起来:
5. 按回车键。
6. 到这里你可能会意识到屏幕上显示的权限太多——你有两个选择:
a. 在命令末尾使用 |more,一次完整显示一屏。
b. 将输出通过管道重定向到一个文本文件,然后使用 > filename.txt.
7. 我选择了第2 个选项,用记事本打开文件,最终发现高级管理层组有权限重置老板的密码!
权限搜寻(使用 PowerShell)
既然你已经发现了委派,你可能会想知道:是否还存在一些你并不知道的委派——可能来自过去的员工,或者是恶意的管理员。
我整理了一段简短的 PowerShell 脚本:它会搜索每一种可委派的对象类型,并列出两种常见的权限委派——重置密码以及“send-as”(来自 Exchange)。
下面是来自某个域的示例运行:
在你自己的域中使用此脚本:
1. 打开 Active Directory Users and Computers ,然后导航到要调查的域(或组织单位)。
2. 右键单击它,然后选择“属性(Properties)”。
3. 在“属性编辑器(‘Attribute Editor’)”选项卡中,查找“distinguishedName”属性。
4. 选择它并按下“查看(View)”,然后复制“LDAP Path”。之后你会需要它。
5. 从 GitHub 下载该脚本的副本:
https://raw.githubusercontent.com/thephoton/activedirectory-delegation-searcher/master/search.ps1
6. 右键单击并使用 PowerShell ISE 编辑脚本。
7. 编辑第 6 行($bSearch = …),, 将 DOMAINCONTROLLER 替换为你域中某一台 DC 的名称。
8. 编辑第 6 行,将 LDAP 替换为你在第 4 步中复制的路径。
9. 保存脚本,然后单击“运行”。
10. 让脚本遍历你的 Active Directory;进度会在控制台中报告,完成后你将收到一个弹窗,详细说明已向其委派权限的对象——你可能会感到惊讶!
如果你需要更多关于如何检测是谁在 Active Directory 中修改了权限的信息,请查看我们的 how-to 。此外还有一个 free tool from Netwrix,可提供可操作的洞察,帮助你了解在 Active Directory 和文件共享中谁拥有什么权限。
面向初学者的 Windows PowerShell 脚本教程
了解更多分享到
了解更多
关于作者
Matt Hopton
顾问
ICT 网络管理员、IT 顾问以及创业者。除在 Sir Thomas Rich's School 担任网络管理员外,Matt 还为本地企业开发并托管网站,开发软件,并提供硬件推荐。