IPS 拦截了经 VPN 的数据库连接:划定例外范围
VPN 不会让内部的数据库流量免于检查。在选择之前,比较签名抑制、来源排除和类别禁用。
VPN 内部的数据库连接仍会被 IPS 拦截,事件日志会说明原因,而最快的修复看起来像一条例外。在此之前,先看清隧道究竟改变了什么。它只保护两端之间的流量,随后把普通的内层数据包交给检查内网的那台设备,而签名恰恰是在那里触发的。隧道不是豁免,检测也未必就是错的。
解封装处正是检查重新开始的地方
离开隧道的流量以普通 IP 数据包的形式到达数据库主机。该路径上的任何入侵防御设备都会按自己的策略评估它们,因此一条穿越加密链路的连接仍可能被为内网编写的规则丢弃。
端到端 TLS 决定了这种可见性的边界。当客户端校验数据库服务器的证书时,检查设备会处理连接,却读不到应用负载,因此那里的检测匹配的是元数据而不是查询文本。忽略这一点,每条被拦截的连接都像是深度检查的证据。两件事都成立:设备既没有失明,也不是什么都读。
检测默认并不等于误报
签名的存在是为了捕获某种模式,而预期的业务流量也可能真的走到有漏洞的代码路径上。先把记录下来的事件与应用操作对上:时间戳、内部源与目的、端口、签名标识以及所采取的动作。这六个字段还能告诉你,告警属于失败的那条连接,还是属于恰好繁忙的邻居。
少数数据包到达服务器并不能认定 IPS 就是原因,匹配到签名也不能证明客户端合法。在事件与客户端的自述相互印证之前,两种解读都只是猜测。相互印证的事件才是证据,而数据库版本也是判断的一部分。
三种例外范围以及各自移除了什么
这些选项停用的检查量各不相同,差距比设置界面暗示的更大。抑制签名只对匹配到的流量移除一条规则。排除来源会移除来自该地址的一切检查。禁用类别则移除一整族规则,有时会波及整个策略。
| Scope | What it stops | What you give up |
|---|---|---|
| Suppress one signature | That rule, for the matching flow | One detection, reviewed against a version |
| Exclude a source address | All rules for that address | Every signature that address would have triggered |
| Disable a category | A rule family across the policy | Protection 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"
写下豁免了什么、为什么,以及在下一次签名更新或应用升级之后何时复查。按计划重读的抑制是工程决定;无人记得的那条,则是信任边界的缓慢扩张。