【问题标题】:disable enumeration other user accounts in active directory禁用枚举活动目录中的其他用户帐户
【发布时间】:2020-07-30 08:38:07
【问题描述】:

呼呼,

是否可以在 AD 中禁用对其他用户的搜索?在这张图片中,我以“普通”用户身份登录。

Get-ADuser search

这是我们的广告结构的图片。

AD Structure

所以我不希望用户可以通过 powershell (get-aduser) 在用户 OU 中找到另一个用户

这可能吗?

我希望你有足够的信息来理解我的问题。

问候

【问题讨论】:

  • 默认是让目录对所有人可见。如果你改变它,你可能会遇到奇怪的故障。您可以 - 显然 - 在 AD 结构上设置 ACL ...但我不知道如何...并且会非常谨慎这样做,除非有真正迫切的需要.
  • 是的,我试图拒绝组中所有用户的“阅读内容”,但后来我的登录脚本不再起作用。
  • 是的,除了制造新问题之外,欺骗 AD 权限不太可能是做任何事情的可靠方法。我唯一看到它有用的是可以自动存储在 AD 中的 BitLocker 密钥之类的东西。锁定到一小群帐户是有意义的。 ///// 如果您只想阻止人们查看电子邮件地址...我会简单地锁定地址簿访问权限以获取他们需要的内容。你看过你的企业全球通讯录吗? [咧嘴]
  • 好的,这是一个很好的提示。我只是通过取消选中“经过身份验证的用户”中的“读取所有属性”来使其工作。到目前为止没有发现任何副作用。
  • 抱歉“列出内容”而不是“读取所有属性”

标签: powershell active-directory ou


【解决方案1】:

这在 Windows 中并不是真正的事情。 AD 中的默认设置是所有用户都已阅读。其次,AD 中的任何人都可能有一个电子邮件别名,因此通过他们的电子邮件别名/SMTP 地址搜索他们是否使用 PowerShell,并且应该用于电子邮件查找,所以,恕我直言,这是一个徒劳的用例。

在 AD 中查找用户不需要 Get-ADUser。自从 AD 出现以来,就已经能够做到这一点,而且远早于 PowerShell 使用旧脚本方法和 .bat/.cmd/.vbs/WMI/ADSI 或 .Net 直接使用旧脚本方法,这就是在 PowerShell 之前完成的方式曾经是一件事。

如果您没有什么用户使用特定的 cmdlet/cmdlet,那么您需要通过 'PowerShell just enough administration (JEA)' 实施限制

同样,对于在其环境中禁用(或尝试)PowerShell 的人来说,不需要使用 PowerShell 扫描并从 AD 获取信息,这是一个有据可查和使用过的东西。

示例: How Can I Get a List of All the Users in an OU and Its Sub-OUs?

VBScript:

On Error Resume Next
Const ADS_SCOPE_SUBTREE = 2

Set objConnection = CreateObject(“ADODB.Connection”)
Set objCommand =   CreateObject(“ADODB.Command”)

objConnection.Provider = “ADsDSOObject”
objConnection.Open “Active Directory Provider”

Set objCommand.ActiveConnection = objConnection

objCommand.Properties(“Page Size”) = 1000
objCommand.Properties(“Searchscope”) = ADS_SCOPE_SUBTREE

objCommand.CommandText = _
    “SELECT Name FROM ‘LDAP://ou=finance,dc=fabrikam,dc=com’ WHERE objectCategory=’user'”
Set objRecordSet = objCommand.Execute
objRecordSet.MoveFirst

Do Until objRecordSet.EOF
    Wscript.Echo objRecordSet.Fields(“Name”).Value
    objRecordSet.MoveNext
Loop

或者

ADDS PowerShell (CMDLET, ADSI & .Net) to Expedite Your Tasks

ADSI:

<#
PowerShell ADSI(Active Directory Services Interface) commands
1. How to find the users property.
#>

$users1 = [ADSI]"LDAP://cn=copy,cn=users,dc=contoso,dc=com"
$users1 | select *

# 2. How to find the Group members for a Group.
$test = [ADSI]"LDAP://CN=test,CN=Users,DC=contoso,DC=com"
$test.Member | 
ForEach-Object {[ADSI]"LDAP://$_"} | 
select samccountname, samaccounttype

# 3. Listing an OU Contents
$ou=[ADSI]"LDAP://ou=tech,dc=contoso,dc=com"
$ou.PSBase.Children
$ou.PSBase.Children | Format-Table sAMAccountName

【讨论】:

  • 感谢您的详细回复。这有助于理解我的问题比我想象的要大。我以为我可以轻松地将用户彼此隐藏,但似乎不行。你有什么想法吗?因为他们获得的那些信息非常敏感,例如电子邮件地址。
  • 是的,直接在 ADDS 中进行即可。 ADDS 提供了许多选项,但除了电子邮件地址、电话、办公室信息,也许还有家庭地址之外,ADDS 用户对象中确实不应该有其他 PII,如果你有,是时候与你的风险管理/政策/安全/审计类型来解决它。即使有了上面的列表,我也可以从用户的 Twitter/Facebook/TicTok 习惯中获得所有这些信息。只是说'in.... ;-}
【解决方案2】:

所以这对我有用: 我刚刚通过取消选中“用户”OU 的“经过身份验证的用户”中的“列表内容”来使其工作,到目前为止我没有发现任何副作用。

Rights of Authenticated Users

“普通”用户无法再通过查询看到其他用户。 用 powershell 测试:AD-GetUser 和 CMD "net user"

Query Result

所以如果以后没有任何副作用,我的问题就解决了。

我会告诉你的。

干杯

【讨论】:

  • 很高兴知道您找到了此设置。我们都喜欢这里的 PowerShell,但我告诉人们,如果不需要,不要编写脚本。尤其是当核心产品(在这种情况下是 Windows ADDS 本身)已经提供了解决方案时。
猜你喜欢
  • 2022-06-16
  • 1970-01-01
  • 2017-02-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多