企业安全之 HIDS

797 阅读4分钟

主机入侵检测系统(HIDS)是基于主机的入侵检测系统,是在企业安全建设防御体系中很重要的一环。本文主要介绍 HIDS 系统的一些主要功能和在实现时遇到的一些难点。

性能篇

从整体架构上来说, HIDS 是属于 C/S 架构,需要在主机上部署一个客户端,用来采集系统数据,上报给后端服务器进行分析。操作系统有很多种,因此如果要保证整体的部署率,就必须对这些不同的操作系统进行适配兼容,这个在开发上会有一定的难度。当前开源的产品,例如 OSSEC 等,也只是支持部分主流的操作系统。另外很重要的一点是,生产环境对系统性能非常敏感,通常对部署在上面的客户端有很苛刻的性能指标要求,例如在客户端运行时,cpu 消耗不超过 10%,内存消耗不超过 100M 等。这就要求在实现安全方案时,不能随意选取方案,必须严格的评估方案对性能的影响,如何平衡安全能力和性能损耗是一个值得深入思考的问题。经过一段时间的观察,目前有些号称能同时做到安全功能完备,性能消耗一直很低的产品,多少都会有一些骚操作,来让客户端表面的消耗很少。

那么该如何做到尽量少的性能损耗呢?一个很重要的手段就是瘦客户端,客户端尽量做到只是采集和上报数据,分析计算能力交给后端服务器处理。通常来说,一个 HIDS 至少包含风险合规和入侵检测的功能,风险合规功能的分析计算就可以完全交给后端处理,客户端只是读取相关的配置文件或软件信息,批量上报给后端服务器,后端服务器根据漏洞规则来判断分析是否有漏洞或不合规。入侵检测则要求高一点,通常需要根据当前主机的情况,及时的做出规则判断,例如需要根据进程信息来实时是否有反弹shell或者提权行为等,这个过程会有一定的性能损耗。在数据上报过程中,如果数据量很大,很多主机同时上报数据,会对网络产生一定的影响。因此,可以改变客户端上报数据的机制,从客户端主动上报改为服务端下发任务的形式来触发数据上报,同时配合一定的策略,避免同时上报的情况发生。理想很美好,就算做到很完美,也不能保证性能要求一定会达标。给客户端增加”自杀“机制,在极端情况下,会通过停止客户端所有功能来优先保证业务系统的稳定运行。

功能篇

一个功能相对完善的 HIDS 系统通常都要有资产基线、日志采集、进程信息监控、 webshell 检测能力。资产基线包括等保要求的检测、系统漏洞检测、应用软件漏洞检测等。日志采集一般指系统记录的日志信息,不同系统采集方式也不同。进程信息监控则是属于核心模块,详细记录主机上启动的进程、输入的命令等,同时也提供反弹 shell 或提权检测相关安全功能的检测逻辑。webshell 检测则是在 web 攻防中一个很重要的能力,需要及时检测上报主机上发现的后门文件。

误报和漏报一直都是一个难点,误报过多会让人陷入忙于应对“狼来了”的疲惫中,从而放过真正的威胁。而漏报则会直接放过威胁,比误报更严重。在解决这些问题时,经常会陷入到误报减少了,但是漏报上升了,漏报情况减少了,误报也上去了的尴尬局面。这就对安全能力提出了严格的要求,这是个长期的过程,在寻求解决方案的同时,重视真实环境的运营能力很重要,毕竟结合第一线的数据来源才能判断自己的方案是否没有偏离太远。

技术篇

相比服务端,客户端面临的情况更加复杂。既要兼容多个不同版本的系统,又要考虑实现是否影响到性能,应急响应方案能否及时更新。

安全方案会根据实际的检测效果频繁的更新,如果每次更改检测方案都需要发新版本,升级所有的客户端,势必会影响到应急响应速度。因此,在实现客户端的时候,把检测逻辑独立出来,以插件形式来集成,支持直接从后端下发检测逻辑。

原文链接