【发布时间】:2014-08-08 00:56:40
【问题描述】:
我想防止任何人删除我的注册过滤器,但我的帐户除外。 我想知道如果我在 FwpmFilterAdd 函数中设置安全描述符是可能的。 你能告诉我示例的源代码,它为我的目的添加了一个使用安全描述符的过滤器吗?
我在 WFP msdn 中阅读了“阻碍过滤器删除”和“强制过滤器删除”。 有什么方法可以防止任何人强制删除过滤器吗? 提前谢谢你。
【问题讨论】:
我想防止任何人删除我的注册过滤器,但我的帐户除外。 我想知道如果我在 FwpmFilterAdd 函数中设置安全描述符是可能的。 你能告诉我示例的源代码,它为我的目的添加了一个使用安全描述符的过滤器吗?
我在 WFP msdn 中阅读了“阻碍过滤器删除”和“强制过滤器删除”。 有什么方法可以防止任何人强制删除过滤器吗? 提前谢谢你。
【问题讨论】:
首先,就上下文而言,这些是您所指的示例代码的链接:
那里的示例只是说明了如何使用FwpmFilterSetSecurityInfoByKey0 和FwpmFilterGetSecurityInfoByKey0 API。然而,为这些样本选择的特定场景的实际目的是非常可疑的。为什么有人要在 WFP 过滤器上设置显式 ACL 以禁用对世界的 DELETE 访问,同时禁用 WRITE_DAC 和 WRITE_OWNER?出于所有实际目的,本地管理员总是可以取回对象的所有权,然后覆盖安全描述符(这是“强制过滤器删除”示例所做的)。 非管理员不能取得其他帐户对象的所有权,并且即使使用默认安全描述符也不能删除 WPF 过滤器,这将通过将 NULL 作为第三个参数传递给 FwpmFilterAdd 来提供给过滤器。
要回答您的问题,您不需要进一步保护它。使用“阻碍过滤器删除”技术将不会获得更多安全性。该技术所做的最好的事情是添加小的混淆层。您为 WFP 过滤器获得的默认 DACL 是 BFE 引擎 DACL,描述为 here. 使用默认 DACL,只有本地管理员具有 DELETE 访问权限。并且本地管理员可以根据定义对系统进行任何操作,因此管理员没有任何安全意义。
【讨论】: