这个问题实际是围绕着等级保护要求的恶意代码防范措施做专门深入发散。
笔者:国际认证信息系统审计师、软考系统分析师
总所周知,恶意代码的扫描检测过程是需要耗费系统资源的。
而作为服务器来说,它的用途决定了它的恶意代码检测措施应该越贴近系统原生就越好。
所以在服务器上启用微软自家的 Defender 作为恶意代码检测措施是首选方法。
进一步地,如果服务器已经按等保要求做好了安全设置,并且经过足够的环境评估后认为实时查杀确实没有必要,那么就可以从实时查杀调整为每天定时查杀。
这样的调整可以减少查杀检测过程对服务器性能的拖累,但又保证了必要的检测操作频次。
那么怎样才是以上想法的最佳实践呢?
本文涉及知识点包括:Windows Server 2012版本或以上、Microsoft Defender、计划任务、命令行操作等。
作为网管应该都很熟悉了,这软件的查杀能力,从基本不算个事发展到现在是实打实的恶意代码防备手段,期间名字变来变去,而且还衍生出好几个版本,包括独立版本的Microsoft Security Essentials,整合到终端管理的System Center Endpoint Protection,内置到操作系统的Windows Defender,收费服务版的Microsoft Defender,以及大包大揽整合防火墙和浏览器保护的Windows 安全中心等等。但其内里基本一致,所以下文在不具体区分时一律统称Defender。
Windows Server 2012需要先提出来说,是因为在当年 Defender 还很不成熟,因此 Windows Server 2012 没有自带 Defender。
但需要注意的是,Defender 的发展是独立的,无论安装的哪一张皮,其引擎都一直在更新变强。
其实究竟 Windows Server 2012 有没有自带 Defender 是个话题来的。微软文档声称只有 Windows Server Core 2012 有自带。但实际上个别 Release 的 Windows Server 2012 可以通过“添加角色和功能向导”的“功能”选项树中勾选“用户界面和基础结构-桌面体验”而直接安装上 Defender,可惜笔者手头的版本没有。
参考:
那么,要在Windows Server 2012 上启用 Defender,实际有两种方法:
(1)安装使用本来是面向 Windows 7 的 Microsoft Security Essentials,下载地址是:
https://www.microsoft.com/en-us/download/details.aspx?id=5201
下载时,会弹出提示有两个一样名字的下载文件,小一点的是32位的版本,大一点的是64位的版本。
下载后直接安装是不行的,会报告不支持这个版本的操作系统。
解决办法是对安装包设置兼容模式为 Windows 7,然后通过管理员提权后的命令行窗口指定 /disableoslimit 参数来运行,这样就可以绕过限制完成安装。
MSEInstall.exe /disableoslimit
安装完成后会立即进行自动更新,然后就可以进行系统扫描了。
(2)安装使用 System Center Endpoint Protection(SCEP)。SCEP实际就是 Defender,可以独立于System Center 安装使用,安装时不需要设置兼容模式或者参数。但SCEP不是免费的,需要购买许可证才能安装使用。
Defender 在 Windows Server 2016 开始通过新增设的Windows 安全中心嵌入到系统,相对独立的UI界面。
而到了Windows Server 2019,独立UI界面被取消,全部功能都通过Windows安全中心提供。
无论是哪个版本,关闭实时检测功能都是可以直接设置的,就是个开关(关了之后会严正警告用户):
定时查杀就是本文的关键。独立版本的Defender,包括SCEP,都在界面上直接提供了定时查杀的设置:
插入一句:细心的系统管理员会发现这里最古怪的就是设置的定时和他实际执行时间的差异。比如设置在半夜2点,但实际可能是2点18分之类的时刻才执行。
这个偏差的原因其实是微软故意这样设计的,引入时间点+/-30分钟的偏移量,避免所有服务器都在同一时刻进行定时检测而产生整体性的性能影响。
问题来了。嵌入到操作系统的 Defender ,全都没有在界面上给出和定时查杀有关的任何设置。独立UI界面的就取消了“设置”页面,整合到安全中心点设置也没有。
但如果仔细看看就会发现,对于这个截图,提示了有进行定时查杀。那么究竟在哪里设置的呢?
答案就是计划任务。
其实所有版本的 Defender,无一例外都是通过“计划任务”实现定时查杀的。这里就要引出 mpcmdrun.exe 这个 Defender 的命令行工具程序。
罕有人知道,Defender 提供了一个命令行工具,可以通过命令行方式调用Defender 进行杀毒。这个工具程序名为 mpcmdrun.exe,所在的路径按不同的Defender版本而不同。比如对于System Center Endpoint Protection或者独立安装版的 Defender,位置是:
C:\Program Files\Microsoft Security Client\
对于系统自带的 Defender,位置会是下面两者之一:
C:\Program Files\Windows Defender\
C:\ProgramData\Microsoft\Windows Defender\Platform\具体版本\
所以,Defender的定时查杀设置,实际就是Defender程序根据用户指定的设置或者预先设定的策略,在任务计划程序库创建定时触发任务,调用mpcmdrun.exe去完成后台查杀操作。
对于SCEP或者独立安装的Defender,位置是:
任务计划程序库\Microsoft\Microsoft Antimalware
对于系统自带的 Defender,位置是:
任务计划程序库\Microsoft\Windows\Windows Defender
在这些分支下面就可看到 Defender 的自动任务。
可以按需要修改这些自动任务的定时触发设置,从而实现定时时间的调整。
如果有需要,还可以在任务计划程序库的根一级创建自定义的Defender任务。
mpcmdrun.exe 作为命令行工具,需要给出参数去使用。可以在管理员提权后的命令行窗口下,通过如下格式的参数去运行该命令:
MpCmdRun.exe [command] [-options]
这里就不详细介绍每个参数的作用了,需要了解的可以直接看微软的网站:
可以关注的重点在于:
1、更新恶意软件扫描定义的命令行参数选项:
-SignatureUpdate [-UNC/-MMPC]:必须在每次进行定时扫描前先尝试更新恶意软件扫描定义有无更新。
2、和扫描操作有关的参数:
-Scan参数,尤其是它的子参数,-ScanType,设置扫描模式,分别是0:按默认配置;1:快速扫描;2:完整扫描;3:指定文件或目录扫描
3、限制CPU占用比,防止过度拖累系统性能
-CpuThrottling 数值百分比(不需要百分号)
4、设置超时天数避免长时间扫描而不结束
-Timeout 天数
5、排除(不扫描)的路径
-CheckExclusion -path 路径
具体到点实际操作,如下是一些典型例子,注意路径可能需要调整:
1、更新恶意代码检测数据库
"%ProgramFiles%\Windows Defender\MpCmdRun.exe" -SignatureUpdate
2、快速扫描
"%ProgramFiles%\Windows Defender\MpCmdRun.exe" -Scan -ScanType 1
3、完整扫描
"%ProgramFiles%\Windows Defender\MpCmdRun.exe" -Scan -ScanType 2
4、自定义扫描对象
"%ProgramFiles%\Windows Defender\MpCmdRun.exe" -Scan -ScanType 3 -File 指定的路径
5、扫描引导扇区
"%ProgramFiles%\Windows Defender\MpCmdRun.exe" -Scan -ScanType -BootSectorScan
Defender 可以通过组策略设置去限制修改设置,策略的位置在本地组策略编辑器(GPEDIT.MSC)的“计算机配置-管理模板-Windows组件-Windows Defender”分支内。组策略本身有详细解释,所以本文不详细介绍。
最后是笔者自己的实践策略,这并不一定适合所有的企业环境,因为网络安全始终还是取决于具体管理的人。
1、错开服务器之间的定时查杀任务时间
2、错开服务器内各种自动任务的定时执行时间,尤其是备份和查杀
3、对基本不存在外部文件进入的服务器,在已经做好相关防护的前提下,可以不启用实时扫描。
4、对于虚拟化环境,有条件时应部署对宿主机整体的扫描检测手段。单独每台虚机部署也不是不可以,但需要认真按前面3点认真编排,以免对宿主机整体性能产生严重影响。
本站微信订阅号:
本页网址二维码: