我们的安全小组希望我们开始记录外部访问我们视图环境的数据。起初,我们认为视图安全会记录所有外部来源 IP,这样如果出于某种原因发生入侵,我们就会在那里记录下来。
当然,我们的防火墙会记录所有这些信息,但就我们目前的实施情况而言,将其与视图关联起来充其量也只是粗略的。
我们知道在 viewdesktops 上,VolitateEnviroment 中有一组键,其中包含源 IP 和用户名等内容。
我们有一个脚本,当它作为附加到 AD 中的用户帐户的登录脚本运行时,它会根据需要收集信息。
如果我们让 GPO 运行相同的脚本,则不会收集信息。
我们感觉好像遗漏了一块拼图,但不知道是什么。如果有人知道我们遗漏了什么或配置错误,那就太好了,或者如果您有更好的方法让我们专门收集外部源 IP 以供查看,我们也会对此感兴趣。
谢谢,
编辑代码
批处理脚本转储到文本文件@echo off timeout 20 echo %computername%/%username% %time% %date% >>c:\vdi\vmware.txt echo ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~>>c:\vdi\vmware.txt reg query "HKEY_CURRENT_USER\Volatile Environment" /v "ViewClient_LoggedOn_Username">>c:\vdi\vmware.txt reg query "HKEY_CURRENT_USER\Volatile Environment" /v "ViewClient_IP_Address">>c:\vdi\vmware.txt echo.>>c:\vdi\vmware.txt
VB 脚本显示值 Const HKEY_CURRENT_USER = &H80000001 设置 wmiLocator=CreateObject("WbemScripting.SWbemLocator") 设置 wmiNameSpace = wmiLocator.ConnectServer(".", "root\default") 设置 objRegistry = wmiNameSpace.Get("StdRegProv") sPath = "Volatile Environment" lRC = objRegistry.GetStringValue(HKEY_CURRENT_USER, sPath, "ViewClien_Machine_Name", vMachine) lRC = objRegistry.GetStringValue(HKEY_CURRENT_USER, sPath, "ViewClien_IP_Address", vIP) lRC = objRegistry.GetStringValue(HKEY_CURRENT_USER, sPath, "ViewClien_MAC_Address", vMAC) msgbox "远程设备名称为 " & vMachine & " @ " & vIP & " (" & vMAC & ") “
他希望我提一下,批处理文件确实运行了,当我重新连接时我可以看到它正在倒计时,但它并没有获取注册表值。
答案1
每次用户使用 View 客户端连接到 Windows VM 时,无论他们是否注销,我都设法将源 IP、用户名和时间全部保存在一个文本文件中。我从 View 模板中找到了一个名为 CommandtoRunOnConnect 和 CommandtoRunOnReConnect 的 GPO。使用这些 GPO,我们可以执行一个脚本,从 View 中提取信息并根据我们的喜好使用它们。由于此 GPO 未执行登录脚本,因此我相信它使用本地 SYSTEM 帐户执行。
诀窍是使用环境变量而不是注册表项。我认为,由于脚本必须在连接时以本地 SYSTEM 帐户运行,因此无法访问用户的密钥。相反,脚本只显示 %Viewclient_IP_Address%,仅此而已。请随意将其发布到用户论坛上。此文档未提及这些内容,因为变量不是在 4.6 中默认写入的。
感谢大家的帮助