有没有办法根据某些安全相关标准(例如是否存在病毒扫描程序和病毒定义)来阻止 VPN 连接?
在我们的案例中,我们有一个 Windows Server 2008 充当域控制器和 RRAS 服务器。我们还在每个客户端上运行 ESET NOD32 Business,安装由服务器推送。
答案1
您所问的正是许多“网络访问保护”(NAP) 产品的关键所在。就我个人而言,我认为 NAP 之类的措施除了“让诚实的计算机保持诚实”之外,并没有什么实际作用。
从根本上讲,您依赖客户端计算机的可信度来“如实”回答 NAP 服务器计算机向其提出的问题。您的服务器无法“证明”远程计算机正在运行给定程序。您实际上只是相信远程计算机的“好话”。这是 NAP 背后理念的致命缺陷——信任是错误的。
在保证网络安全方面,我认为最小特权原则是最重要的指导原则。了解并监控“瓶颈”和攻击媒介,保持操作系统和应用程序更新,在所有计算机(服务器、客户端等)上仅安装必要的软件,并及时了解安全公告。
如果一台机器上装有 rootkit,可以“说服”本地防病毒软件等,认为它没有被感染,那么 NAP 就无济于事了。我认为,通过最小化攻击面并根据监控流量和行为来检测攻击,可以获得更多的好处。
对于 VPN 用户,我将使用 VPN,将客户端的入站协议限制为已知的“允许集”——Outlook 客户端使用 RPC-over-HTTP(尽管您也可以轻松地使用 VPN 进行此操作)、RDP 访问固定台式计算机或终端服务器计算机、WebDAV 通过 HTTP 导出文件共享等。让 VPN 客户端不受限制地访问网络的第 3 层无疑会暴露广泛的攻击面。
如果您要允许更不受约束的 3 层访问(即使您不这样做,如果您担心未经授权的设备连接到 VPN),我会考虑使用部分基于客户端设备身份验证的 VPN 技术。假设您的用户在其客户端计算机上没有“管理员”权限,并且无法从设备上窃取证书并将其安装在任意设备上,则使用 L2TP/IPsec 和基于计算机的身份验证之类的方法将在很大程度上防止未经授权的设备连接到 VPN。
答案2
您可以查看 W2K8 上的 NAP:
答案3
这可能不是最好的,但却是做一些可能比较简单的事情的最复杂的方法。
如果您的 VPN 由 w2008 服务器处理,您可以执行 WMI 查询
strComputer = OnConnectEvent(APPROPRIATE VPN INFO)
Set oWMI = GetObject( _
"winmgmts:{impersonationLevel=impersonate}!\\" & strComputer & "\root\SecurityCenter")
Set colItems = oWMI.ExecQuery("Select * from AntiVirusProduct")
For Each objItem in colItems
With objItem
WScript.Echo .companyName
WScript.Echo .onAccessScanningEnabled
WScript.Echo .pathToSignedProductExe
WScript.Echo .productState
WScript.Echo .productUptoDate
WScript.Echo .versionNumber
End With
然后你就可以进行适当的比较
答案4
威胁管理网关与 MS Forefront 和 Stirling Wave 结合使用应该可以为您提供此类功能。这听起来非常令人兴奋,但我只在 Microsoft Technologies 研讨会上听到过简短的提及,因此我无法提供任何进一步的建议。
Symantec Endpoint Protection 还可以检测客户端机器的补丁级别以及防病毒软件是否是最新的。但它在客户端上运行,用于保护客户端而不是服务器 - 如果客户端上未安装 Endpoint Protection,那么您将无法对其进行任何操作。