绿盟 IDS 体系架构
绿盟 IPS 体系架构
IDS/IPS 部署示意图
由于 NIDS 采用的是基于攻击特征的签名库,只要加载的攻击特征一多,系统负载会马上飙升,远到不了系统的标称负载就会出现丢包和误报的上升。不能跟基础架构一起扩展的安全解决方案最终都会掣肘
针对 IPS 一个打折扣的版本就是利用 DDoS 引流 - 清洗(过滤)- 回注的防护原理,将防护的流量迁移到清洗集群,清洗集群上的过滤规则只是有针对性的几条高危漏洞规则,做一层很轻的过滤
攻击类型 | 放大倍数 |
---|---|
DNS | 54 |
NTP | 556.9 |
SNMPv2 | 6.3 |
NetBIOS | 3.8 |
SSDP | 30.8 |
CharGEN | 358.8 |
QOTD | 140.3 |
BitTorrent | 3.8 |
Kad | 16.3 |
Quake Network Protocol | 63.9 |
Steam Protocol | 5.5 |
Multicast DNS(mDNS) | 10 |
RIPv1 | 131.24 |
Portmap(RPCbind) | 28 |
网络层的攻击检测通常分为逐流和逐包:
防御清洗策略的启动依赖于阈值,大部分场景下可以做秒级检测,但不能做秒级防御,在触发防御前完成攻击就表现为脉冲
带宽是所有 IDC 成本中最贵的资源,没有之一。云堤提供了“流量压制”和“近源清洗”的服务。流量压制是一种分方向的黑洞路由,近源清洗和黑洞路由相比,防御方的成本比较高,且触发到响应的延时较大
对 HTTP CC 类型的 DDoS,不会直接到源站,CDN 会先通过自身的带宽硬抗。抗不住的或者穿透 CDN 的动态请求会到源站
云清洗厂商提出的策略是,预先设置好网站的 CNAME,将域名指向云清洗厂商的 DNS 服务器,在一般情况下云清洗厂商的 DNS 仍将穿透 CDN 的回源的请求指向源站,在检测到攻击发生时间,域名指向自己的清洗集群,然后再将清洗后的流量回源,检测方式主要是在客户网站前部署反向代理(Nginx),托管所有的并发连接。在对攻击流量进行分流的时候,准备好一个域名到 IP 的地址池,当 IP 被攻击时封禁并启用地址池中的下一个IP,如此往复
不过这类方案都有一个通病,由于国内环境不支持 anycast,通过 DNS 引流的方式需要比较长的生效时间,这个时间依赖于 DNS 递归生效的时长,对自身完全不可控,很多用户使用的 DNS 递归服务器最小 TTL 值长达24小时。同时 CDN 仅对 Web 类服务有效,对游戏类 TCP 直连的服务无效
网上很多使用此类抗D服务的过程可以概括为一句话:更改 CNAME 指向,等待 DNS 递归生效
在 DC 出口部署 ADS 设备,近目的清洗。在 DC 出口以镜像或分光部署 DDoS 探针,当检测到攻击发生时,将流量牵引到旁路部署的 DDoS 清洗设备,再将清洗的正常流量回注到业务主机
应用层的防护需要结合业务来做,ADS 在能利用的场景下承担辅助角色,比如对于游戏封包的私有协议,通过给 packet 添加指纹的方式,ADS 在客户端和服务端中间鉴别流入的数据包是否包含指纹
这是 DDoS 的最后一道防线。这一层的意义主要在于漏过 ADS 设备的流量做最最后一次过滤和缓解,对 ADS 防护不了的应用层协议做补充防护。比如 NTP 反射,可通过服务器配置禁用 monlist,如果不提供基于 UDP 的服务,可以在边界上直接阻断 UDP 协议
实现方式可以是 Web 服务器模块,也可以是独立部署的旁路系统,反向代理将完整的 HTTP 请求转发给检测服务器,检测服务器根据几方面的信息:
然后保存客户端的连接信息技术表,直到触发阈值,然后服务器会进行阻断,为避免误杀,也可以选择性地弹出验证码
增加链路带宽是以上所有防御的基础,必须消除解决方案中的单点瓶颈
运营商为了减少跨 ISP 流量结算,会在本网内缓存 ICP 的内容,广告联盟等甚至也会劫持域名替换广告
HTTPDNS 的本质就是利用 HTTP 协议来完成域名解析,防止被运营商劫持,不过其请求是明文的,仍然可以被劫持,只不过劫持的代价比原来更大一些
大型站点除了 Web 服务器需要支持 HTTPS 以外,CDN 也需要支持 HTTPS,一般情况下需要把网站的私钥提供给 CDN 服务商,但这样就引入了第三方的风险,不得不提的是 cloudflare,它提供了 keyless 的 HTTPS 服务,分成几种实现,从轻度到重度
Flexible SSL 只做客户端浏览器到 CDN 之间的 HTTPS 加密,回源使用 HTTP。Full SSL 这个层次不止实现前者,还包括 CDN 到源站之间也是用 HTTPS,但不校验服务端证书,而第三个层次不仅全 HTTPS,且会校验服务端证书的有效性
即便在 HTTPS 的状态下传输口令,假如网关流量被劫持,证书被替换。无知的小白用户还是选择了不安全的连接怎么办,另一方面现在还出现了在 IDC 劫持流量的攻击行为,这种盗号的效果直逼拖库。于是有的厂商在 HTTPS 的基础上,在应用层再实现一次加密,即便你劫持了流量,也看不到明文。以某厂账号的网页登录为例,登录过程中,客户利用 Javascript 先将用户输入的口令加密,然后再提交给服务端
当然 Javascript 加密用于传输密文只是一方面,另一方面也是为了防止协议逆向后引发的业务安全问题,如自动化注册机
真正发生于 IDC 链路层的劫持,目前没有很好的解决方案,只能尽可能地做到在跨 IDC 传输,跨安全域传输时使用加密通道。应用层支持全流量 TLS 或加密的 VPN 点对点连接
国外几款商业产品的 WAF 支持导入证书的方式来解决 HTTPS 环境的安全防护,通常国内各甲方安全团队自研 WAF 产品基本不支持 HTTPS
将域名的 CNAME 方式解析指向防御方分配的 CNAME 别名就完成了部署。优势在于部署方便快捷,同时还有加速网站性能与阻断 DDoS 等效果。缺点是无法防护 HTTPS 流量
典型产品是 ModSecurity,需要在 WebServer 部署\编译时支持 modules,还需要对模块的规则进行优化精简与按需增加,开发和运营成本极高,不过这类方式在应对 HTTPS 类业务非常适用
也存在例如基于 Nginx 的 Lua 脚本开发的 WAF、基于 IIS 筛选器开发的 WAF
直接部署在机房或被防护网络入口位置,其对于 HTTPS 协议无能为力,但无入侵性、易部署、不影响业务性能、可通过 RESET 包阻断 HTTP 会话、可旁路接入
通过前几类 WAF 的组合,实现相互补防覆盖不到的地方
评判其是否覆盖主流高危 Web 漏洞的检测标准
WAF 系统对最新漏洞攻击的阻断也称为“虚拟补丁”