VPN 内部的数据库连接仍会被 IPS 拦截,事件日志会说明原因,而最快的修复看起来像一条例外。在此之前,先看清隧道究竟改变了什么。它只保护两端之间的流量,随后把普通的内层数据包交给检查内网的那台设备,而签名恰恰是在那里触发的。隧道不是豁免,检测也未必就是错的。

解封装处正是检查重新开始的地方

离开隧道的流量以普通 IP 数据包的形式到达数据库主机。该路径上的任何入侵防御设备都会按自己的策略评估它们,因此一条穿越加密链路的连接仍可能被为内网编写的规则丢弃。

端到端 TLS 决定了这种可见性的边界。当客户端校验数据库服务器的证书时,检查设备会处理连接,却读不到应用负载,因此那里的检测匹配的是元数据而不是查询文本。忽略这一点,每条被拦截的连接都像是深度检查的证据。两件事都成立:设备既没有失明,也不是什么都读。

检测默认并不等于误报

签名的存在是为了捕获某种模式,而预期的业务流量也可能真的走到有漏洞的代码路径上。先把记录下来的事件与应用操作对上:时间戳、内部源与目的、端口、签名标识以及所采取的动作。这六个字段还能告诉你,告警属于失败的那条连接,还是属于恰好繁忙的邻居。

少数数据包到达服务器并不能认定 IPS 就是原因,匹配到签名也不能证明客户端合法。在事件与客户端的自述相互印证之前,两种解读都只是猜测。相互印证的事件才是证据,而数据库版本也是判断的一部分。

三种例外范围以及各自移除了什么

这些选项停用的检查量各不相同,差距比设置界面暗示的更大。抑制签名只对匹配到的流量移除一条规则。排除来源会移除来自该地址的一切检查。禁用类别则移除一整族规则,有时会波及整个策略。

ScopeWhat it stopsWhat you give up
Suppress one signatureThat rule, for the matching flowOne detection, reviewed against a version
Exclude a source addressAll rules for that addressEvery signature that address would have triggered
Disable a categoryA rule family across the policyProtection for unrelated hosts and services

只要产品能表达,就优先选第一行。表达不了时,应把限制升级上报,而不是把宽泛的例外说成精确的例外;批准它的人应当看到书面差异。

你以为自己设定的范围

地址转换会改变例外覆盖的范围。当多个 VPN 客户端出现在同一个转换后地址后面时,排除该地址就把它们全部豁免了,这比最初触发排查的那一条发现要宽得多。

要核对生效范围而不是你填的表单,并把事件标识记在规则旁边。没有理由的例外会变成永久策略,下一位复核者无从判断它是否仍然适用。

重新测试操作与边界

重复同一个无害的数据库操作并确认连接能够完成,再确认无关的检测仍会在应当触发的测试中触发。恢复连通性是一条验收标准;守住既定边界是另一条。

nc -vz 10.40.7.25 5432
psql -h 10.40.7.25 -U app -d appdb -c "select 1"

写下豁免了什么、为什么,以及在下一次签名更新或应用升级之后何时复查。按计划重读的抑制是工程决定;无人记得的那条,则是信任边界的缓慢扩张。

相关文章