远程 Windows 事件记录 - 授权

Posted

技术标签:

【中文标题】远程 Windows 事件记录 - 授权【英文标题】:Remote windows event logging - Authorization 【发布时间】:2011-11-09 15:45:49 【问题描述】:

我正在尝试在我的 c# 应用程序中实现一个日志接口,它将事件记录到本地或远程的“Windows 事件日志”中。在本地没有问题,因为 System.Diagnostics 是一个易于使用的命名空间。

但是,在远程机器上执行此操作(登录另一台机器的 Windows 日志)会带来身份验证和授权问题,即“访问被拒绝”。这是可以理解的,因为让每个人都添加日志是不合逻辑的。

我知道创建新的事件文件夹和源只能在本地完成,我已经完成了(我们称之为“我的应用程序”。我还启动了“远程注册表”服务。

为方便起见,我一直在使用“eventcreate”工具测试日志记录功能,以推断什么是允许的,什么是不允许的。在“以管理员身份运行”cmd。

eventcreate /s myLogServer /id 999 /T Error /L "My Application" /so "My Application" /d "Log Test"

这自然会因“错误:访问被拒绝”而失败。当我添加

/u mydomain\myLogServer /p myPassword

,那么它工作正常。但是,我自然不想提供 myLogServer 的管理员凭据。我更喜欢创建一个受限用户,甚至更好,通过客户端机器使用 Windows 身份验证(希望当我不输入任何 /u /p 时会发生这种情况)。

问题:如何设置只有指定的用户才能将日志写入指定的日志文件夹? 尝试设置注册表项的权限(HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\eventlog..)。 尝试设置事件日志文件(*.evtx)的权限。

子问题:我是否需要在 c# 代码中模拟指定的用户才能获得授权,或者有没有办法将身份验证详细信息添加到 EventLog 对象?

【问题讨论】:

【参考方案1】:

据 TechNet here:

在 Windows Server® 2003、Windows Vista 和 Windows Server® 2008 中,可以自定义计算机上每个事件日志的权限。此功能在以前版本的 Windows 中不可用。访问控制列表 (ACL) 以安全描述符定义语言 (SDDL) 字符串的形式存储在注册表中每个事件日志的名为“CustomSD”的 REG_SZ 值中。

【讨论】:

真遗憾,我一直在 Windows 7 机器上测试这些 :)。如果我也能在 Windows 7 上实现这一点,那就太好了。 很确定这也适用于 Windows 7。

以上是关于远程 Windows 事件记录 - 授权的主要内容,如果未能解决你的问题,请参考以下文章

[MongoDB]------windos远程服务器部署连接

windows服务器下如何修改mysql使mysql允许任何IP远程连接

Windows 2008 R2 远程桌面连接,记录连接IP

windows 2008下查看通过远程桌面(mstsc)的连接到本机的连接记录

记录一次攻击事件(redis 未授权漏洞利用直接登录服务器)

如何关闭windos系统记录日志