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

[玩转系统] 如何在 Active Directory 中查找不活动的用户帐户

作者:精品下载站 日期:2024-12-14 22:07:41 浏览:13 分类:玩电脑

如何在 Active Directory 中查找不活动的用户帐户


您是否知道不活跃的用户帐户可能会导致重大安全风险?

互联网安全中心表示,“威胁行为者通过有效的用户凭据比通过黑客帐户更容易获得未经授权的访问”。

这只是您应该在 Active Directory 中搜索不活动用户帐户并定期禁用它们的原因之一。

我想您会惊讶地发现有多少不活动和休眠帐户。

在本指南中,我将向您展示两种查找这些有风险帐户的方法。

目录:

  • 如何识别非活动用户帐户?
  • 为什么您应该删除不活动的用户帐户
  • 删除不活动帐户的最佳实践
  • 示例 1:使用 PowerShell 查找不活动的用户帐户
  • 示例 2:使用 AD 清理工具查找不活动的用户帐户(还可查找已禁用、已过期和没有登录历史记录)

如何识别非活动用户帐户?

这部分有点长,但它解释了使用什么用户属性来查找不活动的用户帐户。如果您对此不感兴趣,请跳至示例。

用户帐户有一个名为“lastLogonTimeStamp”的属性,该属性的目的是帮助识别不活动的用户和计算机帐户。是的,它也可以用于计算机帐户。

某些登录类型将更新lastLogonTimeStamp 属性,即交互登录、网络登录和服务登录。交互式登录是他关心的,这是当有人在控制台登录时。

让我们看看 ADUC GUI 中的这个属性。

打开一个帐户,单击“属性编辑器”选项卡,然后转到“lastLogonTimestamp”属性。

[玩转系统] 如何在 Active Directory 中查找不活动的用户帐户

lastLogon 值的用途是什么?

您可以在上面的屏幕截图中看到还有一个lastLogon值,在使用PowerShell时您也会看到这个值。 LastLogon 值不会复制到lastLogonTimestamp 所在的所有域控制器。这很重要,因为使用 lastLogon 属性,您必须查询每个域控制器才能查明用户何时登录。 Microsoft 明白这一点,这就是为什么他们早在 2003 年就引入了 lastLogonTimestamp 属性。

从技术上讲,您可以使用 lastLogon 来查找不活动的帐户,但这要困难得多。

现在让我们使用 PowerShell 查看该值。

由于某种原因,Microsoft 在 PowerShell 中将此值重命名为 LastLogonDate。

为什么我不知道但它是相同的值。如果您碰巧知道 Microsoft 为什么在 PowerShell 中重命名它,请在下面评论。

打开 PowerShell 并运行此命令。

get-aduser -identity username -properties *

这是我的域中同一帐户的屏幕截图。

[玩转系统] 如何在 Active Directory 中查找不活动的用户帐户

您可以看到lastLogonTimestamp 和LastLogonDate 具有相同的数据和时间。

只要记住这一点。

PowerShell=上次登录日期
ADUC GUI=上次登录时间戳

使用这些属性,我们可以在 Active Directory 中搜索非活动用户帐户

如果您想了解有关 LastLogonTimestamp 属性的所有技术知识,请查看 Ned Pyle(Microsoft 员工)撰写的这篇文章 - LastLogonTimeStamp 属性 - 它的设计用途及其工作原理

为什么您应该删除不活动的用户帐户

安全是清理不活动用户帐户的首要原因。这是完整的列表。

  1. 安全风险 - CIS 控制#5 表示“有很多方法可以秘密获取用户帐户的访问权限,包括弱密码、用户离开企业后仍然有效的帐户、休眠或挥之不去的测试帐户、共享帐户数月或数年未更改的服务帐户嵌入到脚本应用程序中”我强烈建议您下载 CIS 控件,它是帮助保护和保护环境的重要来源。
  2. 库存和跟踪问题 - Active Directory 是一个集中式数据库。您不仅可以使用它来跟踪您的资产,还可以与其他系统集成,形成完整的资产管理解决方案。如果您不清理 AD 资产,那么您的库存系统将不准确。
  3. 易于管理 - 与#2 类似。混乱的 AD 环境会导致管理起来困难且压力很大。考虑运行 PowerShell 脚本或尝试将软件部署到数百台计算机或用户。当尝试管理具有陈旧和非活动帐户的环境时,您将收到大量返回的错误。
  4. 数据完整性——其中很多都有相同的东西,即数据完整性。同样,AD 是一个集中式数据库,可以与许多系统集成。如果 AD 中的数据不正确,则连接到 AD 的所有系统都将不正确。
  5. 许可 - 这是一个真实的示例。您的 AD 用户帐户与第三方系统(例如 McAfee)同步。 Mcafee 根据用户帐户向您收费。如果您有数百个与第三方产品同步的非活动帐户,您可能需要支付大量不需要的额外许可证。将 AD 与云产品同步时也是如此。

删除不活动用户帐户的最佳实践

以下是清理不活动用户或计算机帐户的一些最佳实践。

  • 切勿立即删除被识别为不活动的帐户。首先禁用它们至少 30 天(时间越长越好)。
  • 搜索 LastLogonTimestamp 为 45 天或更早的帐户,这意味着 AD 帐户在 45 天或更长时间内没有显示任何登录活动。
  • 禁用帐户至少 30 天,我通常选择 60 天。通过远程访问、VPN、笔记本电脑,有时 AD 不会更新。通过首先禁用帐户,可以很容易地重新启用该帐户并恢复用户的访问权限。
  • 向帐户添加描述,其中禁用日期和您的姓名缩写。如果有人问为什么帐户被禁用,这对于其他管理员非常有帮助。
  • 不活动的本地帐户可能并不意味着 Office 365 帐户不活动。这适用于与 Office 365 同步的混合环境。禁用帐户与立即删除帐户对于这些类型的环境至关重要。您可以让在家工作的用户从不向本地 AD 环境进行身份验证,而是每天登录 Office 365。
  • 每月运行一次清理过程。

示例 1:使用 PowerShell 查找不活动的用户帐户

要使用 PowerShell 查找非活动帐户,您需要安装 RSAT 工具或在域控制器上运行这些命令。

所有这些示例都使用我在本文第一部分中介绍的 LastLogonDate 属性。

查找过去 60 天内不活动的帐户


$When = ((Get-Date).AddDays(-60)).Date
Get-ADUser -Filter {LastLogonDate -lt $When} -Properties * | select-object samaccountname,givenname,surname,LastLogonDate

查找过去 30 天内不活动的帐户


$When = ((Get-Date).AddDays(-30)).Date
Get-ADUser -Filter {LastLogonDate -lt $When} -Properties * | select-object samaccountname,givenname,surname,LastLogonDate

这是我的域中的一个示例。

[玩转系统] 如何在 Active Directory 中查找不活动的用户帐户

您可以通过添加 | 将结果导出到 CSV。导出 csv -路径 c:\ps\inactiveusers.csv

$When = ((Get-Date).AddDays(-30)).Date
Get-ADUser -Filter {LastLogonDate -lt $When} -Properties * | select-object samaccountname,givenname,surname,LastLogonDate | export-csv -path c:\ps\inactiveusers.csv

要将范围限制为组织单位,请使用 SearchBase 参数和 OU 的可分辨名称。

$When = ((Get-Date).AddDays(-30)).Date
Get-ADUser -Filter {LastLogonDate -lt $When} -SearchBase "OU=Accounting,OU=ADPRO Users,DC=ad,DC=activedirectorypro,DC=com" -Properties * | select-object samaccountname,givenname,surname,LastLogonDate

查找不活跃的用户并禁用帐户

$When = ((Get-Date).AddDays(-30)).Date
Get-ADUser -Filter {LastLogonDate -lt $When} -Properties * | select-object samaccountname,givenname,surname,LastLogonDate | Disable-ADAccount

在上面的例子中,我添加了 |最后禁用 ADAccount 以禁用所有非活动帐户。

您还可以使用这些命令来搜索计算机帐户,只需将 Get-ADUser 更改为 Get-ADComputer

正如您所看到的,通过过滤用户的 LastLogonDate,可以使用 PowerShell 轻松识别不活动的用户帐户。如果您喜欢 PowerShell,您可以创建一个非常强大的工具来清理 AD。

如果您不熟悉 PowerShell 或者只是想要一个简单的 GUI 工具,请查看示例 2。

示例 2:使用 AD 清理工具查找不活动的用户帐户

AD 清理工具可以非常轻松地查找不活动的用户帐户。该工具还可用于查找 Active Directory 中不活动的计算机。我还添加了过滤器来快速查找过期用户、禁用用户和没有登录历史记录的用户。这些经常被遗忘的帐户也应该成为清理过程的一部分。

让我们看一个例子

要查找过去 30 天内的所有非活动帐户,只需在搜索选项中输入 30,然后单击运行。您可以在搜索选项框中输入任意数字。

[玩转系统] 如何在 Active Directory 中查找不活动的用户帐户

默认情况下,此工具将显示非活动用户和计算机。要仅查看用户帐户,请从过滤器下拉列表中取消选中“显示计算机”。

[玩转系统] 如何在 Active Directory 中查找不活动的用户帐户

这会搜索整个域。

您可以通过选择 OU 或组来限制搜索。例如,我想检查所有会计安全组中是否有非活动帐户。我单击“浏览”,现在可以选择我的所有组或任何 OU。

[玩转系统] 如何在 Active Directory 中查找不活动的用户帐户

要禁用或移动帐户,请选择它们,然后单击操作按钮。

我要将这些帐户移至我创建的非活动 OU。我单击移动按钮,然后选择 OU。

[玩转系统] 如何在 Active Directory 中查找不活动的用户帐户

现在我将检查 ADUC 以验证帐户是否已移动。这样可以轻松查看我要禁用的所有帐户,因为它们被识别为不活动。

[玩转系统] 如何在 Active Directory 中查找不活动的用户帐户

如果您想查找所有禁用的用户帐户,只需下拉过滤器列表并选择禁用的用户即可。

[玩转系统] 如何在 Active Directory 中查找不活动的用户帐户

在上面的屏幕截图中,您还可以通过简单地在过滤器中选择所有过期的用户帐户和没有登录历史记录的用户来快速显示它们。然后,您可以通过移动或禁用这些帐户来对它们采取操作。

该工具有很多选项,并且易于使用的界面可以为您节省清理 AD 环境的宝贵时间。

概括

我向您展示了两个在 Active Directory 中查找和删除非活动用户帐户的示例。我强烈建议您将其添加到每月维护清单中。安全性是 Active Directory 的一个大问题,但正如我所指出的,有几个原因可以解释为什么这是一项重要任务。 PowerShell 是查找不活动帐户的绝佳选择,但需要脚本编写知识。对于那些不喜欢编写脚本或只想快速简单的解决方案的人来说,可以使用 AD Cleanup GUI Tool。

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

取消回复欢迎 发表评论:

关灯