我希望在 Active Directory 的某个地方写入/存储“最后一次从 [计算机] 登录”,或者有一个我可以解析的日志?
想知道上次登录的 PC 的目的是通过网络提供远程支持 - 我们的用户很少四处走动,但我想知道那天早上我所咨询的任何内容都在更新(当他们登录时) ,大概)至少。
我还在考虑将用户名和计算机名写入我可以参考的已知位置的登录脚本,但我们的一些用户不喜欢一次注销 15 天。
如果有一个使用登录脚本的优雅解决方案,一定要提到它——但如果它恰好用于解锁站点,那就更好了!
我希望在 Active Directory 的某个地方写入/存储“最后一次从 [计算机] 登录”,或者有一个我可以解析的日志?
想知道上次登录的 PC 的目的是通过网络提供远程支持 - 我们的用户很少四处走动,但我想知道那天早上我所咨询的任何内容都在更新(当他们登录时) ,大概)至少。
我还在考虑将用户名和计算机名写入我可以参考的已知位置的登录脚本,但我们的一些用户不喜欢一次注销 15 天。
如果有一个使用登录脚本的优雅解决方案,一定要提到它——但如果它恰好用于解锁站点,那就更好了!
作为我们登录脚本的一部分,我将这些信息(以及更多信息)登录到服务器上的隐藏共享中,每个用户都有一个日志文件。注销脚本将用户注销的时间添加到同一日志文件中。易于设置,无成本,信息以易于阅读的格式保存。
我们通过登录脚本来更新计算机对象在 AD 中的描述。
您需要执行自定义的控制委派以允许“经过身份验证的用户”写入域中计算机对象的描述属性。
一旦完成,您所需要的只是一个脚本,它可以生成您想要的任何信息并将属性写入计算机对象。然后通过链接到域的组策略对象将该脚本分配为登录脚本。
我们在描述字段中放置了时间戳、用户名、IP。时间戳排在第一位,因为它可以通过对描述字段进行排序来轻松快速地查看“旧”计算机对象。
如果您想将其用作起点,这是我为此编写的脚本:
出于类似的原因,我必须达到相同的结果;以某种方式确定特定用户从哪台机器登录。我想知道“事前”,并且不能像上面讨论的那样更改用户登录脚本。
我在用户进行身份验证的 DC 上使用了 powershell 来解析安全事件日志:
get-eventlog "Security" | where {$_.Message -like "*Username*" -AND "Source Network Address"} | export-csv C:\Temp\test.csv
使用 excel 或您的收藏夹编辑器打开 .csv 文件,并查找在同一事件中同时显示帐户名称(用户名)和源网络地址的最新条目。
这可能不是 100% 可靠的解决方案(取决于 DHCP 租用时间等),但它对我有用。
您可以为帐户登录事件启用审核。这些事件(包括工作站解锁)将存储在 DC 的安全日志中。
还有第三方工具可以让这更容易,例如True Last Logon。
我只是使用登录脚本将用户名(以及其他信息,如日期和时间、某些程序版本等)写入计算机描述。这样,我可以快速轻松地从 AD 用户和计算机中提取所有信息,并且作为奖励,有一个很好的方法可以识别哪些 PC 仍然处于 AD 中已经有一段时间没有使用(因此很可能是死机)。
ThatGraemeGuy,感谢出色的脚本!我不得不在 PowerShell 中重写它,但它仍然有效。
除了 Adam 的建议之外,确定用户上次登录位置的诀窍是日志聚合。如果您有多个域控制器,您要么必须全部检查它们,要么集中您的日志记录,然后检查单个日志。
一些,甚至可能是大多数第三方工具足够智能,可以查询所有域控制器。但是,如果您正在考虑编写一个脚本来自己解析它,那么对于集中您的日志,我的争论就不够有力了。
理想情况下,您应该为您的 CSIRT 团队获取以下信息以协助调查。
使用工作站名称登录的用户 ID MAC 地址 IP 地址 日期/时间戳登录类型(rdp、interfactive 等)
然后将其转储到他们可以查询的数据库中的 sql 命令中。到处都记录了点点滴滴,但是记录下来可以节省从 DHCP/WINS 服务器等中提取数据的时间……
我打算将此添加为对上述marcusjv答案的评论,但我没有声誉,因此必须单独回答:
在该表达式中 -AND "Source Network Address" 将始终评估为 TRUE
我认为您需要的是:get-eventlog "Security" | 其中 {$ .Message -like "*username*" -AND $ .Message.contains("Source Network Address")}
获得最新信息的唯一方法是通过日志觅食。使用 Microsoft Operations Manager 等工具或 snare 等免费工具将有趣的事件日志从服务器聚合到中心位置(普通文本文件或 SQL 数据库),然后使用 logparser 或 SQL 查询等工具生成所需的报告。
通过事件日志百科全书查找不同事件的不同事件 ID
让我知道,如果您想遵循这条路线,我可以帮助您为 logparser 创建适当的查询。