Web 应用发展到今天,已经是任何业务离不开的方式,即便是新型的云计算这样的高新技术,都是以 Web 的方式提供的,电子商务、支付、信息、移动互联网……等等无不是以 Web 为基本形式的交付。而黑客是已经产业化了,SQL 注入、在线欺诈、DDoS、CC 攻击等犯罪活动层出不穷。这些活动的首要目标就是企业的网站以及相关的 Web 应用程序,那么 Web 应用防火墙应用而生,且越来越重要。青云QingCloud WAF (Web 应用程序防火墙)应势而生。
Web 应用程序防火墙(WAF),即能够将 Web 应用程序的出去的和进来的 HTTP/HTTPS 流量进行过滤、监控和屏蔽。WAF 和传统意义上的防火墙是有一定的区别的: WAF 是关注特定 Web 应用的内容过滤,而传统的防火墙则是服务器之间的守门人。 WAF 通过检查 HTTP/HTTPS 流量,它可以防止来自 Web 应用程序安全漏洞的攻击,如 SQL 注入、跨站点脚本(XSS)、文件包含漏洞以及安全配置错误。
应用场景和功能
凡是适用 Web 服务的地方,都应该假设 Web 应用程序防火墙,因为 Web 天生就是被用来访问的,尤其是 RESTFull 接口风行天下之后,成为了很多非常有价值的端点入口,它是攻击的首冲目标。
主要服务于运行在 QingCloud 基础设施平台之上的 Web 用户,当前服务的主要使用场景包括,金融、电商、O2O、互联网+、游戏、政府、保险、政府等各类网站的 Web 应用安全防护上。
它主要用于解决以下问题:
1、 防数据泄密,避免因黑客的注入入侵攻击,导致网站核心数据库泄露。
2、防恶意CC,通过阻断海量的恶意请求,保障网站可用性。
3、阻止木马上传网页篡改,保障网站的公信力。
4、提供虚拟补丁,针对网站被曝光的最新漏洞(CVE等),最大可能提供快速修复的规则。
青云 QingCloud WAF 主要功能有如下内容:
功能 |
子功能 |
特性描述 |
业务配置 |
支持协议 |
支持对网站的 HTTP,HTTPS 流量进行 Web 安全防护 |
Web 应用安全防护 |
常见 Web 应用攻击防护 |
防入侵:可防 SQL 注入,XSS ,Webshell 等攻击;黑白名单:可定制基于 IP/URL 的黑白名单,实现精确防护 |
Web 应用安全防护 |
CC 恶意攻击防护 |
对请求的源 IP 进行自动化的客户端识别,识别出机器的异常请求,缓解服务器压力 |
Web 应用安全防护 |
自定义安全防护策略 |
可根据 Web 应用自身特点,自定义安全防护策略 |
Web 应用安全防护 |
虚拟补丁 |
在 Web 应用漏洞补丁发布和修复之前,可通过配置防护策略实现虚拟补丁修复 |
管理 |
攻击事件管理 |
支持攻击日志导出到自定的日志服务器 |
可靠性 |
嵌入式部署 |
以集群方式提供服务,跟 LB 相结合,直接部署在 Web 服务前端,防止 WAF 被绕过 |
可靠性 |
动态扩容 |
可根据实际流量情况,缩减或增加集群机器的数量,进行服务能力弹性扩容 |
青云QingCloud运行原理
如下图所示:
正如上文中所介绍的,WAF是运行在 QingCloud 的 Web 应用的第一道防线! 而且搭载QingCloud 负载均衡器,有效的利用现有的资源。
当一个请求到达 QingCloud 负载均衡器时,监听器会检查来访的 HTTP/HTTPS 请求,根据 QingCloud 的云端大数据生成的智能规则,若是带有恶意行为,如 SQL 注入、Webshell、XSS 脚本等,会默认将这些请求阻断,保证业务安全顺利进行。
青云QingCloud WAF的实际操作
关于上手指南,请移步 QingCloud
WAF用户手册 ,本青云志仅列出 WAF 中最为关键功能操作—添加规则,以及特色的日志分析支持:
创建好域名防护策略之后,WAF 就会加载系统的默认检测规则,这些规则由青云维护并更新:
用户也可以根据自己 Web 应用的特点,定制 WAF 检测规则,点击自定义规则下的 “创建” 可以弹出新建窗口:
规则的行为可配置为观察模式或者阻断模式,观察只记录不阻断对业务系统无影响。
* 新增规则时请配置为观察模式,待规则稳定之后再修改为阻断模式。
规则配置要填写要检测的 HTTP 协议字段内容,当前一条规则支持配置检查 5 个协议变量,提交修改之后可以看到填写的内容。
除了可以配置自定义的规则,还可以配置自定义的黑白名单以及 CC 防护功能,点击 “黑白名单” 下的 “’创建”:
*配置的 IP 是将被检查的请求源 IP,包含可选的子网掩码。
*配置的 URL 将进行路径前缀匹配,例如 /abc 可以匹配 /abc/123。
WAF 日志导入青云QingCloud ELK 服务
WAF 的日志可以通过 syslog 的格式发送到日志服务器,可以修改配置组中的 logcenter_ip 和 logcenter_port 参数来配置。 同时,可以将日志倒入 ELK 来分析处理,需要使用 logstash-input-syslog 来接收 syslog 日志,并配置 grok 过滤参数如下:
grok {match => { “message” => “%{WORD:method} %{HOSTNAME:domain} %{URIPATHPARAM:url} %{NOTSPACE:client_ip} %{WORD:action} %{INT:impact} %{WORD:module} %{NOTSPACE:attack_type} %{NOTSPACE:rule_id} %{NOTSPACE:ua} %{GREEDYDATA:post}” }
}
可配置的 dashboard 效果如下: