当前位置:网站首页 > 更多 > 玩电脑 > 正文

[玩转系统] 如何记录 OU 委派

作者:精品下载站 日期:2024-12-14 20:54:53 浏览:14 分类:玩电脑

如何记录 OU 委派


[玩转系统] 如何记录 OU 委派

Active Directory OU 上的权利委派是任何 AD 中的标准做法。委派允许您在各种情况下授予有限的访问权限:

  • 启用您的第一级服务台重置密码(仅限)
  • 允许您的 HR 服务帐户修改一组有限的用户属性(仅限)
  • 允许您的动态组服务修改组成员身份(仅限)
  • ETC…

如果没有明确定义的策略,OU 委派在一段时间后可能会变得一团糟。

本文将向您展示如何重新掌控 OU 委派。使用简单的 PowerShell 脚本,您可以提取委托的概述,并可能确定一些清理候选者。

(如果您正在寻找有关 GPO 安全过滤的信息,请查看本文)

使用 PowerShell 提取 OU 委派

启动 PowerShell 提示符!首先,确保您有可用的 Active Directory PowerShell 模块(使用 DC 或安装远程服务器管理工具)。

使用以下命令可以轻松“抓取”OU:

$OUs = Get-ADOrganizationalUnit -Filter *

要获取给定 OU 的 ACL(访问控制列表),可以使用以下命令:

(Get-Acl -Path $OU.DistinguishedName).Access

每个 OU 上都存在大量 ACL,但其中大多数是继承的。因此,要确定您的 AD 中进行了哪些自定义委托,您应该仅关注非继承 ACL。

以下脚本使用上述命令来:

  • 获取 AD 中的所有 OU
  • 在所有 OU 上设置所有 ACL
  • 列出所有未继承的 ACL

事情是这样的:

# Set up output file
$File = "OU_Delegation.txt"
"Path;ID;Rights;Type" | Out-File $File
# Import AD module
Import-Module ActiveDirectory
# Get all OU's in the domain
$OUs = Get-ADOrganizationalUnit -Filter *
$Result = @()
ForEach($OU In $OUs){
    # Get ACL of OU
    $Path = "AD:\" + $OU.DistinguishedName
    $ACLs = (Get-Acl -Path $Path).Access
    ForEach($ACL in $ACLs){
        # Only examine non-inherited ACL's
        If ($ACL.IsInherited -eq $False){
            # Objectify the result for easier handling
            $Properties = @{
                ACL = $ACL
                OU = $OU.DistinguishedName
                }
            $Result += New-Object psobject -Property $Properties
        }
    }
}
ForEach ($Item In $Result){
    $Output = $Item.OU + ";" + $Item.ACL.IdentityReference + ";" + $Item.ACL.ActiveDirectoryRights + ";" + $Item.ACL.AccessControlType
    $Output | Out-File $File -Append
    Write-Host $Output
}

只需几行代码即可完成实际工作。剩下的就是格式化结果以便于导入到 Excel。

您的输出可能与此类似(但要大得多):

OU=Admins,DC=gigacorp,DC=local;Everyone;DeleteChild, DeleteTree, Delete;Deny
OU=Admins,DC=gigacorp,DC=local;NT AUTHORITY\ENTERPRISE DOMAIN CONTROLLERS;GenericRead;Allow
OU=Admins,DC=gigacorp,DC=local;NT AUTHORITY\Authenticated Users;GenericRead;Allow
OU=Admins,DC=gigacorp,DC=local;NT AUTHORITY\SYSTEM;GenericAll;Allow
OU=Admins,DC=gigacorp,DC=local;GIGACORP\Domain Admins;GenericAll;Allow
OU=Admins,DC=gigacorp,DC=local;BUILTIN\Account Operators;CreateChild, DeleteChild;Allow
OU=Admins,DC=gigacorp,DC=local;BUILTIN\Account Operators;CreateChild, DeleteChild;Allow
OU=Admins,DC=gigacorp,DC=local;BUILTIN\Account Operators;CreateChild, DeleteChild;Allow
OU=Admins,DC=gigacorp,DC=local;BUILTIN\Account Operators;CreateChild, DeleteChild;Allow
OU=Admins,DC=gigacorp,DC=local;BUILTIN\Print Operators;CreateChild, DeleteChild;Allow
OU=Serveradmins,OU=Admins,DC=gigacorp,DC=local;Everyone;DeleteTree, Delete;Deny
OU=Serveradmins,OU=Admins,DC=gigacorp,DC=local;NT AUTHORITY\ENTERPRISE DOMAIN CONTROLLERS;GenericRead;Allow
OU=Serveradmins,OU=Admins,DC=gigacorp,DC=local;NT AUTHORITY\Authenticated Users;GenericRead;Allow
OU=Serveradmins,OU=Admins,DC=gigacorp,DC=local;NT AUTHORITY\SYSTEM;GenericAll;Allow
OU=Serveradmins,OU=Admins,DC=gigacorp,DC=local;GIGACORP\Domain Admins;GenericAll;Allow
OU=Serveradmins,OU=Admins,DC=gigacorp,DC=local;BUILTIN\Account Operators;CreateChild, DeleteChild;Allow
OU=Serveradmins,OU=Admins,DC=gigacorp,DC=local;BUILTIN\Account Operators;CreateChild, DeleteChild;Allow
OU=Serveradmins,OU=Admins,DC=gigacorp,DC=local;BUILTIN\Account Operators;CreateChild, DeleteChild;Allow
OU=Serveradmins,OU=Admins,DC=gigacorp,DC=local;BUILTIN\Account Operators;CreateChild, DeleteChild;Allow
OU=Serveradmins,OU=Admins,DC=gigacorp,DC=local;BUILTIN\Print Operators;CreateChild, DeleteChild;Allow
OU=GlobalAdmins,OU=Admins,DC=gigacorp,DC=local;Everyone;DeleteTree, Delete;Deny
OU=GlobalAdmins,OU=Admins,DC=gigacorp,DC=local;NT AUTHORITY\ENTERPRISE DOMAIN CONTROLLERS;GenericRead;Allow
OU=GlobalAdmins,OU=Admins,DC=gigacorp,DC=local;NT AUTHORITY\Authenticated Users;GenericRead;Allow
OU=GlobalAdmins,OU=Admins,DC=gigacorp,DC=local;NT AUTHORITY\SYSTEM;GenericAll;Allow
OU=GlobalAdmins,OU=Admins,DC=gigacorp,DC=local;GIGACORP\Domain Admins;GenericAll;Allow
OU=GlobalAdmins,OU=Admins,DC=gigacorp,DC=local;BUILTIN\Account Operators;CreateChild, DeleteChild;Allow
OU=GlobalAdmins,OU=Admins,DC=gigacorp,DC=local;BUILTIN\Account Operators;CreateChild, DeleteChild;Allow
OU=GlobalAdmins,OU=Admins,DC=gigacorp,DC=local;BUILTIN\Account Operators;CreateChild, DeleteChild;Allow
OU=GlobalAdmins,OU=Admins,DC=gigacorp,DC=local;BUILTIN\Account Operators;CreateChild, DeleteChild;Allow
OU=GlobalAdmins,OU=Admins,DC=gigacorp,DC=local;BUILTIN\Print Operators;CreateChild, DeleteChild;Allow

使用 Excel 分析 OU 委派

使用之前的脚本导出数据后,就可以使用 Excel 仔细查看数据了。

将输出文件“OU_Delegation.txt”的内容复制到 Excel 中,使用分号作为列分隔符,并在顶行创建过滤器:

[玩转系统] 如何记录 OU 委派

到目前为止,该文件的主要内容将是标准 OU 委派。标准委派是系统授予的默认访问权限,以提供标准功能的 Active Directory。

要识别自定义委派,您应该对 ID 列进行过滤,以删除任何 NT AUTHORITY、BUILTIN、EXCHANGE 和众所周知的 SID。这包括以下内容(可能还包括更多内容,具体取决于您的安装):

  • NT AUTHORITY\经过身份验证的用户
  • NT 机构\企业域控制器
  • NT当局\系统
  • 内置\帐户操作员
  • 内置\打印操作符
  • GIGICORP\域管理员
  • GIGICORP\Exchange 可信子系统
  • GIGICORP\组织管理

您还应该过滤掉默认授予Everyone 的拒绝条目,以避免意外删除OU。

设置过滤后,请仔细查看其余条目。然后您将获得域中自定义委托的完美图片!

在我的小型测试设置中,我发现了这个条目:

[玩转系统] 如何记录 OU 委派

也许这个自定义委托是我想要的,或者它可能是一个清理候选者。

您可以检查 OU 属性的安全选项卡,以获取有关已配置访问权限的更多详细信息:

[玩转系统] 如何记录 OU 委派

如果单击“高级”,您将能够具体查看 OU 中的哪些对象类型被授予了哪些访问权限:

[玩转系统] 如何记录 OU 委派

概括

现在你就得到了它。获取 Active Directory 中 OU 的自定义委派概述可能看起来是一项艰巨的任务。但实际上它相对容易实现。

Active Directory OU 上的访问权限委派应始终遵循最小权限原则。使用 PowerShell 和 Excel,您可以快速深入地检查您的设置。

如果您的 AD 与 Office 365 同步,并且您希望以最简单的方式管理它,请查看 Easy365Manager。

Easy365Manager 是 AD 用户和计算机的一个小型但功能强大的管理单元,可让您管理 AD 用户属性内的电子邮件属性、Office 365 许可证和邮箱:

[玩转系统] 如何记录 OU 委派

[玩转系统] 如何记录 OU 委派

借助 Easy365Manager,您可以在 AD 用户和计算机中进行所有日常 Office 365 管理。不再需要访问 Exchange Online 管理中心、Microsoft 365 管理中心或 Azure 门户。

您甚至可以删除本地 Exchange Server,因为 Easy365Manager 允许您管理所有邮件属性。这可以为您提供 100% 的保护,免受 Exchange 本地 0day 攻击。

下载 Easy365Manager 进行 30 天免费试用。您只需几分钟即可下载、安装和配置 Easy365Manager:

您需要 登录账户 后才能发表评论

取消回复欢迎 发表评论:

关灯