ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

IPS入侵防御系统原理与部署实战:从检测引擎到双机高可用

IPS入侵防御系统原理与部署实战:从检测引擎到双机高可用 1. 一张图看懂IPS到底解决了什么问题1.1 IDS和IPS的“发现”与“动手”之差先说一个被问烂但其实很多人没搞透的问题IPS和IDS到底差在哪。IDS是入侵检测系统IPS是在它前面加了一个PPrevention也就是入侵防御系统。一字之差本质区别就是一个只会“喊”一个真的会“动手”。早期网络防护思路很简单把攻击流量镜像一份给检测设备检测设备发现异常就告警然后让安全管理员去分析、去处置。这就是IDS的旁路模式。但问题就出在“处置”这两个字上——管理员看到告警是两小时之后的事攻击早就打完了数据也早就拖走了。IPS的诞生就是因为光靠“发现”已经不够用了必须在流量经过的时候直接拦截让恶意攻击根本没有机会到达业务服务器。简单类比一下IDS就像大厦里的监控摄像头它能看到小偷从哪个门进来的但拦不住他IPS是站在门口的保安看到可疑人物直接伸手拦下来。所以从部署形态上讲IPS必须串接在业务链路中间流量必须从它肚子里过一遍才能做到“边检测边阻断”。这也是为什么现在很多硬核安全项目里一台千兆IPS的通过性能标称都做到好几Gbps甚至更高因为它是网关设备性能不行就直接拖慢整个业务。1.2 IPS检测的流量特征与误报漏报权衡IPS的核心矛盾永远是“误报”和“漏报”的博弈。规则做得太严正常业务很容易被拦比如某个业务流量特征恰好命中了一条攻击签名结果线上业务直接断掉规则做得太松攻击流量又漏过去了IPS就成了摆设。这里我说一个比较真实的情况很多厂商的IPS默认策略其实是偏保守的尤其是涉及“高危漏洞利用”这类规则时默认是开启的但像Web攻击类规则有时候默认只是“告警”而不是“阻断”。为什么因为厂商也怕误杀业务宁可让你在真实攻击发生时从日志里看到告警手动处置也不愿意因为一条规则误杀导致你的核心业务宕机。实际部署的时候你要根据自己的业务容忍度去调整策略核心数据库区域宁可误报率偏高也要拦截内部测试环境可以全部放开只记录日志。另外还有一个现实问题——加密流量。现在全网流量超过一半甚至七八成都是HTTPS了IPS直接看只能看到一个加密的壳子。很多方案是做SSL卸载或者用流量代理的方式让IPS能看到明文但这又引入了证书管理和链路性能的负担。这个问题后面我会专门展开讲这里先记住一个结论IPS不是万能的它解决的是“已知威胁的自动化拦截”问题不是所有安全问题。2. 核心检测原理解密IPS凭什么能拦住攻击很多人以为IPS就是一个“大号防火墙”其实它最核心的能力藏在检测引擎里。要理解IPS不能只停留在“串在链路中间的设备”这个层面得深挖一下它内部是怎么判别一个流量是正常还是恶意的。2.1 特征签名匹配最古老也最看家的本领第一种也是最基础的检测能力叫“签名检测”或“特征匹配”。攻击流量的报文字节序列里往往有固定特征比如某个漏洞利用代码会包含一段固定的Shellcode指令里必定出现过/bin/sh或者cmd.exe这些字符串再比如SQL注入里铁定会出现 OR 11、UNION SELECT这种组合。IPS会把已知攻击的特征整理成规则库然后对经过的每个报文的载荷部分做模式匹配。这种方式的优势很直接准确率高、性能好、不需要理解上下文。厂商的规则库通常按威胁类型和维护程度分级比如一些老牌厂商的规则库里SQL注入、XSS、命令注入、路径遍历这些Web类签名是常年保持更新的而且每条规则还有CVE编号关联方便你溯源。但特征匹配也有硬伤只能识别已知的攻击逻辑稍微变形一下它可能就不认了。比如把攻击字符串拆成多个TCP分片发过去或者把大小写交替混用老式特征引擎就抓瞎了。所以大部分现代IPS引擎都会对上层的协议做重组先把TCP分段拼回去再做特征匹配。这个“重组”过程非常吃性能这也是IPS设备普遍要配多核CPU和专门处理芯片的原因。2.2 协议解码与状态跟踪理解流量的“上下文”第二个核心能力是协议解码。单纯做特征匹配不知道这个流量是在哪个阶段出现的也不知道请求和响应的对应关系很容易被欺骗。IPS会把HTTP、SMTP、DNS、FTP、SMB这些主流协议按RFC标准解析一遍搞清楚每个报文里的“动作”和“参数”分别是什么。举个典型例子HTTP协议里攻击者可以伪装成正常请求的User-Agent头来绕过程序对UA的简单过滤但协议解码引擎会把HTTP请求拆成请求行、包头、消息体然后分别匹配规则。比如一个Content-Disposition头里构造的路径穿越攻击不解析协议头根本发现不了。再比如智能DNS隧道检测需要追踪每一笔DNS查询的域名、长度、频率靠的就是状态化的协议解析能力。状态跟踪则是更进一步的逻辑。TCP三次握手有没有建立、HTTP请求后有没有对应的响应、FTP的PORT命令和后续数据连接的关系这些都要在IPS内部用会话表维护。有了会话状态IPS才能识别那些“跨多个报文”的攻击典型就是“慢速攻击”——攻击者慢慢发头部数据把连接挂住不放耗尽服务器并发连接池。这种攻击单个报文看起来都正常但放到整个会话上下文里就显得很反常。2.3 异常行为分析与启发式检测对付变形和未知攻击特征库永远滞后、协议解码也有盲区所以现在的主流IPS一定会叠加一层行为分析引擎。行为分析不看单条流量是否匹配签名而是看一段流量“像不像”攻击者。举个例子一台机器在1分钟内向几千个不同目的地发起SSH连接尝试这大概率就是暴力破解或者蠕虫扫描。单条连接都合规但聚合起来看就非常可疑。IPS会给这类行为建模比如“爆破Crack阈值每分钟失败尝试超过20次”“端口扫描阈值30秒内超过100个不同端口”一旦超过阈值就可以判定恶意直接对源IP进行阻断。这类防护对“分布式慢速猜解密码”特别有效——攻击者控制很多肉鸡、每台只试三次密码特征库完全没法应对行为聚合可以。还有一类是启发式检测用沙箱或者模拟执行的方式来判断流量里携带的文件是否恶意。IPS接受到可疑文件时可以把它抽出来送进内置的虚拟执行环境看它运行时有没有干“坏事”比如改注册表、外传数据、自我复制再根据行为的恶意程度决定是否放行。这种技术很吃计算资源通常用采样或降级策略来处理不能对每个文件都做沙箱否则性能直接崩掉。2.4 情报关联分析让IPS拥有“记忆”把特征、协议、行为三层引擎叠加之后还有一个升级方向就是威胁情报联动。现代IPS可以接入外部或本地的威胁情报源把流量里的源IP、域名、证书指纹、文件哈希拿到情报库里比对。比如一个源IP曾经被情报库标记为C2服务器或者钓鱼主机哪怕它的流量在特征和行为层面都很正常IPS也可以直接判黑。这大大降低了漏报率。在实际运维中我在大厂看到过一套做法把IPS和全流量分析系统联动IPS负责前线的实时封堵全流量系统负责历史流量回溯情报平台提供最新的IOC指标。一旦回溯发现某台服务器之前和某个恶意域名通信过就把这个域名同步给IPS做临时封禁封禁到期后自动失效。这套体系跑起来之后安全运营的效率会有质的提升。3. IPS和防火墙、WAF的分工别再傻傻分不清在实际方案询价和项目验收中我最常听到的问题就是既然防火墙也能拦攻击为什么还要单独买IPS既然IPS什么都能拦那还要WAF干什么要回答这个问题得先弄清楚这三类设备工作在安全体系里的哪个层次。3.1 防火墙的定位是“门禁系统”传统防火墙的主要职责是“访问控制”。它根据IP、端口、协议来生成一条条策略决定谁能进出网络。换个更好理解的说法防火墙是办公楼的“门禁闸机”只核对你是哪个公司、工牌上写的楼层权限对不对它不管你进了办公楼之后是想去正常工作还是准备偷东西。所以防火墙在处理DDoS分布式拒绝服务攻击的时候能起到第一层作用——直接用ACL把攻击源的IP段拉黑。但面对SQL注入、0day渗透这类躲在正常端口里的攻击防火墙就只有干瞪眼的份了因为封端口对业务是毁灭性的。现代防火墙虽然集成了很多安全能力叫NGFW下一代防火墙但它内置的IPS功能主要解决单包特征类型的问题协议深度和规则精细化程度跟专业IPS还是有差距的。3.2 WAF的定位是“特定执勤的安检”WAF全称Web应用防火墙它只关注Web应用流量HTTP/HTTPS。攻击者想通过Web漏洞入侵网站时WAF会去识别URL、Cookie、请求参数、文件上传内容里有没有包含SQL注入、XSS、文件包含、命令执行等攻击载荷。为什么不让IPS顶替WAF因为Web应用层的攻击复杂多变而且非常依赖对业务的理解同一段参数在登录页面出现可能正常但在搜索框出现可能就是注入尝试。WAF可以做更细粒度的Web上下文建模比如配置站点ID、规范Web API路径、对特定URL单独设置加白名单还能配合Cookie的加解密做会话防护。相比之下IPS更像个“通用保安”它对所有协议一视同仁按签名库和协议解码来识别攻击对Web特有语义的支持相对薄弱。真实项目中往往是“IPSWAF”串联WAF先卸掉Web注入类攻击IPS再兜底拦截其他协议层面的漏洞利用和扫描行为。3.3 三者如何协同一份清晰的分层分工表说穿了这三类设备是互相补充的关系不是互相替代的关系。我之前做等保项目时最常给客户的方案就是防火墙做边界访问控制IPS在核心交换和服务器区入口做威胁深度检测与阻断WAF在Web服务器前端做应用层专项防护三层各司其职。参数上的选型也很讲究如果业务只做内部OA系统风险集中在Web漏洞那WAF优先级更高如果是对外提供全端口服务那IPS一定得配上。维度防火墙IPSWAF工作重点访问控制、IP端口策略全局流量深度检测与阻断Web应用层攻击防护看什么五元组源IP、目的IP、端口等全部流量内容特征、协议行为HTTP/HTTPS请求内容、参数、上传文件无法应对应用层复杂攻击对业务上下文理解不足非Web协议的攻击、内网横向扩散部署位置网络边界出口核心链路串接/区域入口Web服务器前端串联典型事件封禁恶意IP连接拦截漏洞利用、爆破、蠕虫传播拦截SQL注入、XSS、CC攻击我记得有个客户花了很大的价钱买了一台高端防火墙以为万事大吉结果内网一台机器中了挖矿木马不停地对外发起扫描。防火墙没拦住因为流量用的是正常端口和合法会话后来加了IPS第一时间把异常扫描和C2心跳流量特征命中并拦住了。这个例子能帮助理解边界防线再硬中层的流量检测能力必须有。4. 部署形态与实操要点别让IPS变成“透明人”很多用户买回IPS之后不知道该把它放哪个位置也不知道怎么和现有网络拓扑融合。这其实比选型更重要——同样的设备部署方式不对价值直接减半甚至归零。4.1 串接部署Inline的正确姿势IPS既然要做“阻断”就必须串在流量路径上这叫Inline模式。最常见的放置位置是互联网出口防火墙之后、核心交换设备之前或者数据中心服务器区的前面。串接模式只分“放行”和“拦截”两种动作状态流量通过时需要经过“解码—检测—决策”的完整流水线。我第一次部署IPS的时候最大的教训是没处理好MTU和链路带宽的关系。IPS串接在千兆链路上但链路实际承载的流量有大量突发流量结果设备用着用着就出现丢包业务侧开始投诉网络卡顿。后来才知道需要先看设备的最大吞吐性能和每秒并发处理能力通常要按峰值带宽的1.5到2倍来选机型同时把设备的管理口和业务口严格区分开避免管理流量占业务带宽。串接部署还有一个必须注意的技巧先以“告警模式”跑一到两周观察误报情况确认无误后再切成“阻断模式”。否则一上线就拦截很容易出现业务大面积中断既得罪业务部门也让管理层对安全设备失去信心。4.2 旁路部署的“半吊子”方案如果因为性能或者链路割接的顾虑实在没法做串接有人会用SPAN镜像口做旁路部署。这种情况下IPS请求过来的流量是“复制品”理论上做检测分析没问题但想让它去阻断就特别尴尬——因为它不在真实链路上只能通过向交换机下发ACL来封堵源IP或者用BGP路由扰动的方式把流量引到自己身上又叫Bypass模式。这里有个常见误区有人以为旁路部署的IPS也能像串接那样直接拦截单个连接其实做不到。旁路模式下它最多能做的事是“联动封堵”也就是发现恶意IP后通过管理接口通知防火墙或交换机把它拉黑但这个过程中最初的几次攻击流量可能已经进入业务系统了。所以我的建议是旁路模式只适合做“威胁感知和审计”不适合做“防御”。如果你采购IPS的初衷就是为了拦截攻击那还是老老实实做串接不要因为怕割接影响业务而选择半吊子的方案。4.3 每台IPS上线前的数据放行细则这里补充一个实际项目里经常被忽视的细节IPS策略上线前必须有“预案”意识。正规一点的做法是分四步走。第一步梳理现网业务流量明确哪些端口和协议是核心业务必须放行的比如Oracle的1521、MySQL的3306、Kafka的9092等第二步把IPS策略配置成“检测日志”模式观察正常流量是否存在误报第三步从误报日志中提取业务特征IP或指纹配置“源IP白名单”或“特定规则加白”保证核心业务链路不中断第四步再把策略切成“阻断告警”。这套流程我基本每次部署都执行一遍后续出问题的概率大幅降低。5. 双机高可用与联动切换为什么方案里必须有两台你给的需求里提到“方案所用设备均为2套”这确实是现在等保和重要系统安全设计里的常规要求。现实中单台IPS一旦宕机默认策略往往是“FAIL-OPEN”发生故障时自动让流量通过以保业务连续——这时候业务倒是没中断但安全防护形同虚设如果改成“FAIL-CLOSE”故障时切断链路防止流量裸奔单台设备故障就等于整个业务断网。这两个结局都很难接受所以必须上双机高可用HA。防火墙、WAF、IPS在双机和切换原理上有很多共通点我放在一起讲。5.1 双机部署的两种形态主备与负载分担两台设备组成HA组最常见的形态有两种。第一种叫主备方式Active-Standby同一时刻只有一台处理流量另外一台随时待命。主设备的配置和会话信息会实时同步给备机一旦主设备故障备机以极快的速度接替业务。这种模式配置简单、逻辑清晰大多数整数项目都用它。第二种叫负载分担方式Active-Active两台设备同时处理流量每条业务流量按照某种规则分发到其中一台。这种方式可以提高整链路吞吐能力但配置复杂度高得多两台之间还需要维护大量的会话同步和防统战逻辑对设备性能和运维水平要求很高。从项目实际来看遇到双链路出口比如同时连电信和联通、流量规模确实超过单台处理能力的场景我才推荐负载分担。对于普通的单出口场景老老实实做主备就好运维成本低切换逻辑也容易和业务方解释清楚。5.2 健康探测和心跳机制怎么判断“死没死”双机切换的核心是“状态监测”。设备之间平时通过专用的心跳线或者管理网口互相发心跳报文简单来说就是“你活着没活着就回我一声”。一旦连续N个心跳包没有收到回应备机就认为主机挂了开始接管业务。这里的N和心跳间隔需要根据业务容忍度调优心跳间隔太短容易因为链路抖动误判太长切换时间就会拉长业务中断时间变大。我们项目里常用的参数是“1秒探测、连续3次失败判定故障”也就是3秒内感知故障并完成切换。但只靠心跳是不够的因为可能发生一种情况主设备的操作系统还正常运转心跳也都在回但业务口的链路已经断了比如对端交换机端口挂了或者光纤被挖断了。这时候设备并不会主动让位而业务其实已经中断。所以正规的HA方案一定要配“端口联动”或叫“链路探测”——将心跳模块与业务物理端口状态绑定一旦某个核心业务口链路Down掉就触发本机“自降级”让备机立刻接替业务避免业务长时间中断。检查HA状态的时候最常用到的两个命令是show ha status查看本机高可用角色和show ha link-statistics查看心跳链路质量可以实时看到主备角色、同步状态、对端设备健康度等关键信息。如果是国产设备通常走设备自带的Web管理界面看HA状态同样很直观。5.3 故障切换中细思极恐的几个细节这里展开说几个切换过程中容易出事的细节不说不痛快。第一个是“ONE-ARM健康检查”环境下的误判。很多IPS在双机模式里会配一个探测目的地址用来模拟真实用户探测业务是否通。比如每隔几秒向Web服务器发起一个TCP探测连续失败就判定业务异常然后切备机。这个设计本身没问题但问题是这个探测源地址往往走的是管理口或者独立探针口没走真实的业务转发路径因此它只能证明“探测口能通”不能证明“业务口能通”。我在一个项目里真的遇到过Web服务器本身已经跪了两台IPS还在那里争着当主设备因为它们的探测目标是第四层端口而服务器处于半死状态时端口照样能响应。后来我把探测改成走业务转发路径并增加了对HTTP响应内容的校验才算真正感知到业务故障。第二个是“会话保持”问题。设备切换的时候已经建立的TCP连接是继续还是断开防火墙和IPS的HA一般都支持“会话同步”也就是把已建立的连接状态从主设备实时同步到备机这样切换之后原有连接不会中断。但如果同步没配好或者某些国密加密流量无法同步备机接管后所有旧连接都会被重置用户端会看到“连接被服务器错误关闭”。解决思路有两条一是确保会话同步开关开启二是在应用层设计重连容忍机制比如客户端自动重连不要把“断连重连”视为不可接受的故障毕竟这是保障安全所付出的代价。第三个是“脑裂问题”。双机之间心跳断了但两台设备都还活着此时它们都认为自己是主设备就会同时开始处理流量。在传统主备模式下这是灾难——两个出口分别向网络里通告自己的地址路由器一会儿学到一个一会儿又学到另一个甚至同时学到两个流量转发就完全乱了。处理手段也分两层设备本身要去检查“心跳口物理状态是否正常”同时配置“抢占延迟”和“优先级”防止网络振荡期频繁切换网络层面则要配合Spanning Tree生成树协议或VRRP/VRRP来做二层防环和路由收敛把脑裂风险摊到最小。5.4 防火墙、IPS、WAF联动切换时最容易踩的坑项目里做安全域建设时防火墙、IPS、WAF经常是三层串联部署的防火墙在最外层IPS在中间WAF再单独挂在Web服务器前端。这三类设备如果都上双机就需要重点考虑“链路切换的级联效应”。想象一个典型场景防火墙主备切换成功但它背后的IPS还认为自己在主状态于是流量过来时IPS的MAC地址表还没更新导致所有依赖防火墙MAC地址转发的老交换机仍然把流量丢回旧路径。我见过最折腾的一次因为防火墙做了虚拟集群双活切换后VRRP的虚拟MAC地址从A设备漂移到B设备但核心交换机上的动态MAC地址表还缓存的旧端口结果业务断了一个小时才自动老化清理。这种问题的经验处置是切换完成后强制刷掉交换机的FDB表MAC地址表或者把双机方案统一做成“VRRPVRRP”的形式让三层网关和二层设备感知到同一套优先级尽量同步收敛。更实用的一条原则是链路串联越多的设备越要在方案设计阶段就统一“主备切换的主备角色顺序”比如约定按“防火墙—IPS—WAF”的次序逐层切换并且每层切换的收敛时间间隔拉开几秒避免“三台一起切换引发全网振荡”。有些高端项目还会做“旁路BYPASS继电器”设备故障时自动把流量直通绕过先保住业务再通知运维介入这也是值得考虑的设计。6. 常见问题与排障实录实战经验直接抄6.1 IPS拦了正常业务怎么办紧急处置第一件事先把该条规则从“阻断”切到“告警”恢复业务保留日志。然后抓取被拦截的实际流量报文确认触发规则的具体特征串。大概率是特征串覆盖过广比如某些漏洞利用的特征片段在正常用户的User-Agent、文件下载参数里也会出现。解决办法是给具体的源IP、目的IP或URL加白名单或者联系设备厂商规则团队优化签名让规则更精准。这里要提醒同行尽量不要用“全局关闭所有规则”来救火那是用安全生命换业务命得不偿失。我之前救过一次火业务方说“搜索功能突然全部不能用了”排查下来是一条“命令注入尝试”的规则命中了搜索框的正常参数特征串里包含;ls之类的字符。我临时把该规则对搜索域名的请求和响应用白名单放行然后把签名库升了一级之后就没有再误报。6.2 CPU和性能检查的基本顺序设备变慢、时延拉高别急着怀疑硬件坏了先按这个顺序排。第一进设备看CPU是不是被“日志审计”模块占满了——有些设备把审计日志写入本地数据库是CPU密集操作第二看“协议解析”模块的CPU占用常见原因是小包冲击PPS过高或者大量TCP分片重组第三检查有没有被抓的扫描洪流攻击者发起的扫描会对IPS产生成倍的压力。处理策略是加PPS限速策略对明显异常的源IP做临时黑洞同时考虑扩容或升级设备。每一层都排查完再下结论不要动不动就重启设备。6.3 加密流量检测怎么才不“瞎”如今流量一大半是TLS。IPS如果不做解密等于瞎了一只眼。做法是把业务证书的私钥导入IPS或让IPS作为SSL代理解密后检测再加密转发。这个操作很有效但有两个坑。一是证书管护CA证书链不完整会导致大量握手失败排错的时候得先看TLS握手日志二是合规问题解密用户流量在部分行业医疗、金融会涉及隐私合规必须提前和法务业务确认授权范围。我做过一个折中方案只对指定的内部域名做SSL解密外部公共域名不解密既兼顾了检测能力又避开了隐私雷区。6.4 规则库的迭代管理IPS的“弹药”是规则库但很多人买完设备就忘了这茬半年不更新一次。现在攻击手法更新极快旧规则永远拦不住新漏洞。我在运维规范里通常要求生产设备每周同步一次规则库重大漏洞公告发布后24小时内手工拉一次紧急更新。测试环境的规则库先加载跑一天观察误报情况再推往生产这个“先测试后生产”的流程能少挨不少骂。6.5 问题排查速查表现象可能原因排查动作业务突然全部中断IPS单机FAIL-CLOSE、链路Down检查设备电源、端口状态先切BYPASS恢复业务特定业务无法访问其他正常某条IPS规则误命中查阻断日志定位规则临时切告警并加白名单双机切换后业务不恢复会话同步失效、MAC表未更新查看HA状态与会话同步统计清除下游交换机陈旧MAC项时延增大明显IPS吞吐不足、小包冲击观察CPU、PPS、会话并发数临时加限速与黑洞策略HTTPS业务被大量拦截解密后检测规则误杀查看TLS解密日志与命中规则优化加白设备重启后策略丢失配置未保存或未做配置备份检查配置保存状态建立每日配置备份与恢复演练顺便再说一个和IPS配套的小技巧真的要把IPS的威力发挥出来不要只看它自己的策略要联动去看“威胁验证”这套闭环IPS发现并封堵一个IP之后别让它只躺在日志里。可以配置自动封禁超过阈值并持续X分钟的规则同时把这些告警推送到安全态势平台做关联分析。我习惯用的方式是把IPS的告警日志通过Syslog导到日志分析平台再配合一次全流量回溯确认这个IP在内网有没有“同源同特征”的兄弟IP如果有顺手一起封掉。多做这一步攻击者往往会发现他刚换一个IP还是被秒封局面会完全扭转过来。这就是我常说的安全设备本身只是工具真正能打的永远是围绕工具建起来的一整套运营机制。
返回列表