以编程方式发现“仅限访客”共享/安全模型

Posted

技术标签:

【中文标题】以编程方式发现“仅限访客”共享/安全模型【英文标题】:Programmatically discovering "guest only" sharing/security model 【发布时间】:2010-01-23 02:49:36 【问题描述】:

在现代 Windows 上,默认配置是这样完成的,即如果我以本地用户身份登录网络,我实际上只能以访客身份获得身份验证(有关此行为的更多详细信息在 http://technet.microsoft.com/en-us/library/cc786449(WS.10).aspx 中进行了解释)

当我的程序尝试通过 DCOM 访问此类服务器上的 WMI 时,我只是收到“拒绝访问”错误,可能是因为不允许来宾用户连接到 WMI。

我想将此错误与其他类型的访问被拒绝错误(例如密码错误或用户名不存在)区分开来,以便我可以向用户解释他们需要什么来解决问题。

所以我的问题是,我能做些什么来检测这样的服务器。我在想,如果有一些 COM 组件可以由来宾激活,那就可以了 --- 我可以尝试激活这样的组件,如果可行,我知道我的登录凭据是正确的。但我想不出任何这样的具体组成部分。

有人知道这样的组件吗?或者任何其他诊断这种情况的方法?

【问题讨论】:

【参考方案1】:

不,我不记得有一个访客可以访问的 DCOM 服务器。那不是不安全吗? 如果您有时间,您可以使用 dcomcnfg 检查 DCOM 服务器的所有安全设置。也许有客人。但我不这么认为。

在另一边。您无法在客户端看到 AccessDenied 背后的原因,因为这会使服务器更容易受到攻击。如果攻击者可以区分不同类型的拒绝访问错误,他可能能够相应地调整他的行为。 但如果您有权访问服务器,则可以激活 DCOM 日志记录(请参阅http://support.microsoft.com/?scid=kb%3Ben-us%3B892500&x=18&y=11)

作为解决方案,我建议您将此类和类似的问题以及它们如何发生在常见问题解答/自述文件/网页中。人们倾向于在网上搜索而不是阅读消息框。

【讨论】:

感谢您提供指向 DCOM 日志记录的指针,但我主要对尽可能远程诊断问题感兴趣。让一些 DCOM 组件即使对客人也可以访问,这在本质上是不安全的。例如,任何人都可以安全地使用回显服务器(不过,并不是说今天有这样的 DCOM 组件。)

以上是关于以编程方式发现“仅限访客”共享/安全模型的主要内容,如果未能解决你的问题,请参考以下文章

如何以编程方式关闭通知托盘

并发编程(学习笔记-共享模型之管程)-part3

并发编程之线程安全性

如何以编程方式使用 xna 为 fbx 模型设置动画

实战并发编程 - 01多线程读写同一共享变量的线程安全问题深入剖析

并发编程(学习笔记-共享模型之无锁)-part5