站在互联网+风口上,重点探讨高可用架构设计、存储技术架构、CDN和网络架构优化、前端技术进展、移动应用架构设计、IT架构新思维、运维2.0等技术的2015中国系统架构师大会迎来了一次里程碑的盛况。如何同时满足高安全、高可靠和高依赖的行业架构?如何应对海量实时的大流量、高并发、高响应、高实时的互联网架构需求?牛盾云加速为此做出的贡献与探索无疑对得起大家的掌声。今天小编就给各位带来此次大会上大神kindle充分准备的干货与大家分享,希望给有幸参加会议的诸位加深回忆,也给未能与会的朋友们一些参考,让大家对牛盾云加速深入了解的同时增添信任与支持。下面我们进入正题。
引言 从安全问题聊起
围绕web安全漏洞的检测和防护系统有非常多,经常用到的有漏洞扫描器,waf防火墙,代码审计产品。漏洞扫描器通常是通过爬虫抓取网站url去进行漏洞探测,通常我们只需要填写目标域名就可以帮助我们发现很多明显的web安全漏洞。但是因为大部分的漏洞扫描器需要通过爬虫抓取网站连接参数,然后进行漏洞测试,这样的模式会存在一些爬虫深度、表单和js交互能力的挑战,造成请求地址和参数抓取不完整,另外缺少加密数据测试等问题,最终造成部分安全漏洞被漏报,也会有业务增长带来新漏洞难以实时监控,加上绝大部分都是定期扫描,这样就会存在给关注漏洞的攻击者放开了利用漏洞完成攻击的时间窗口。waf防火墙 是通过对http协议数据分析发现恶意流量并进行拦截的一个系统。传统waf设备需要采购,价格昂贵,需要对现有业务网络拓扑进行调整,且不 能跟随业务发展灵活拓展节点,比如新增几个idc就需要再进行设备采购,而且部署较为麻烦。代码审计产品可以发现的解决程序代码里的漏洞,从根本上解决程 序漏洞,但是网站的运行不只是web安全问题,也会有web容器的安全问题、配置不合规或者漏洞。比如nginx,iis和apache都出现过解析漏洞,对很多企业或个人都造成过巨大的损失。DDOS硬防价格更加昂贵,且DDOS的防御并不是采购硬防就可以了,还需要解决庞大的带宽问题。这些安全问题,我们很难通过一个系统,一次配置或者一次扫描解决掉。
理想方案
能够在各个环节时刻保障网站的安全、快速、稳定运营,且便于用户使用、最好是零部署,零维护的可持续不断完善的解决方案。
牛盾云加速架构解析
调度系统介绍
牛盾云加速的调度系统使用了我们公司的兄弟产品CloudXNS(以下简称XNS),XNS一款基于DPDK自主研发,单机性能可达千万QPS的智能 DNS系统;线路分布广泛,共有30多个点近百组万/双万兆服务器。与传统的AXFR、IXFR等分发方式相比,XNS自主研发更新模块,可以做到半秒级生效。XNS还对DNS协议进行扩展,除了常见的所有记录类型外还衍生了LINK、AX、CNAMEX记录。API简单全面非常适合作为CDN的GSLB服务。由于是自主研发的所以不受开源软件级漏洞影响,比如今年bind的tkey漏洞自始至终牛盾云加速没有受到影响。
海量配置管理
牛盾云加速每天都面临数万域名的安全、加速策略的变更操作,对配置变更频繁度极大。由于我们的服务节点业务层是基于nginx二次开发的,且可以根据 nginx新版无缝升级。最初在配置管理这一块之前我们使用etcd+confd的方案,confd每隔俩分钟去监控etcd的配置信息,根据模板去生成 nginx的配置文件,这样我们很方便的完成了服务的自动发现和配置生成,随着业务的发展我们发现的配置内容变多,且变更频繁,reload时候 workers对配置生效时间较长且影响性能,有些特殊情况一旦加载错误配置,会影响之后无法正常reload。为了解决这些问题,我们采用了ngx_lua+redis的方案,在过程里增加了内存锁和故障时也可以使用过期数据等机制。最终完美实现了5s完成全网配置变更且无需reload即可实时生效,而且每个域名配置走独立路由互不影响。
另外cdn回源都需要用到inerdns,而inerdns每次配置的同步和实时生效是个很棘手的问题。bind+mysql方案又效率低下。牛盾云加速通过golang+redis重新开发了inerdns系统,借用如上海量配置管理思路。也完成了动态的变更和实时生效。并且在每个节点的机器上都部署了很轻量级的DNSserver,顺便也规避了网络查询慢和超时等问题。
云waf
牛盾 云加速的云waf非常注重安全防护灵的活性和处理性能。能够对数据流进行双向处理,对接收到的数据进行自解码处理,通过基于语义分析的sql注入检测方式 和其余少量的正则,引入了规则链的概念使我们在诸多复杂的变种攻击的处理中更加精准,避免了策略粗暴造成的误拦截。对POST不同类型的数据格式进行了解 析,能够获取到文件名,文件内容,参数,参数名等信息做深入的检测分析。支持用户在平台内自定义安全策略,并对以上所有所有安全策略动态管理。另外我们的用户网站在接入牛盾云加速时会进行指纹的识别分配最优的安全策略给用户。关注最新的攻防技术和漏洞情况更新安全策略,更新的时候我们结合后端的实时日志分 析分析系统(ERK)进行策略的适配调整。另外结合数据分析系统可以对误报和漏报进行监控,在后续数据分析部分会有介绍。
CC防护
CC攻击是DDoS攻击的一种,通常是通过僵尸主机发起大量的HTTP请求进行攻击。传统的CC防御有ip频率、IP+URI频率、验证码、302等方 案,然而这些方案最终处理方式要么封ip,要么容易被绕过,要么用户体验不好。牛盾云加速默认策略通过对客户端的带有网站资源维度特征的请求频率判定是否 存在CC攻击的可疑行为,然后给客户端植入特定代码进行检测,如果客户端可以带过来即可正常访问,如果带不过来那么该请求会被阻断。并且牛盾云加速会把识别到的攻击指纹,全节点实时同步,完成全线防御。从而保障后端业务的正常运行不受攻击影响。面对较为复杂的CC攻击,牛盾云加速会对访问日志进行实时的异常分析,对防御策略进行智能调控。同时我们在平台也给客户提供了多种防御策略可自由选择,也支持请求限速功能等功能。整个防御策略自始至终只是阻断了黑客 攻击的客户端请求,对正常用户不受影响。
DDOS防御
牛盾云加速提供了400G的抗D带宽。全 线部署了自研的cc和synflood防御机制。构建了五个大清洗中心,旁路部署基于DPI的DDOS攻击检测设备和清洗设备,可以做到逐包深度检测,秒 级攻击响应时延,从而保障流量清洗效果,并支持攻击指纹报文匹配丢弃,动态的指纹学习机制。在攻击流量达到单节点一定比例的时候,我们通过XNS把攻击流 量调度到我们的清洗中心完成流量的清洗。而抗DDOS光拼带宽和硬防是不行的,攻击流量把带宽打满怎么办?为了解决这个问题,牛盾云加速跟运营商合作对于超大DDos攻击采用近源压制的办法,在攻击流量到达目的机房前进行黑洞。
SSL支持
SSL 与CDN在云加速市场一直被当做鱼与熊掌不可兼得,支持HTTPS加速的只有寥寥两三家,而且比起某加速政企版的高额门槛,牛盾云加速的HTTPS 服务更加亲民。此局面的原因,小编想着一方面是HTTPS尚未普及,另一方面则是解决性能与质量问题的技术成熟度了。牛盾云加速很早就开始了前瞻性的深度 调研,当之无愧称得上先锋典范。先说说技术问题,早期的SSL握手的过程中,不会有Host的信息,所以服务器端通常返回的是配置中的第一个可用证书。因而一旦需要多域名分别配置证书,返回的始终是同一个。SNI (Server Name Indication) 是一项用于改善SSL/TLS的技术,在SSLv3/TLSv1中被启用。它允许客户端在发起SSL握手请求时(具体说来,是客户端发出SSL请求中的 ClientHello阶段),提交请求的Host信息,使得服务器能够切换到正确的域并返回相应的证书。于是牛盾云加速通过ngx_lua开发了基于 SNI的HTTPS服务,只要用户提供HTTPS的key文件就可以加速,甚至无证书支持也已列入研发进程,不久就会面世。另外同是HTTPS网站,差距 却可以很大,很多网站只是加上TLS证书就万事大吉,譬如12306,殊不知HTTPS还存在巨大优化空间,牛盾云加速在证书质量方面就深得客户好评。全球知名的SSL安全和性能研究机构Qualys SSL Labs评测表明,牛盾云加速所支持的SSL,在sslab标准检验评分可以达到A,如果强制HTTPS的时候HSTS值放大一些可以得到A+,这已然是 最高评价了。
CDN加速
在CDN加速环节牛盾云加速主要分为以下四方面:
- 缓存优化:就近节点缓存,自定义缓存策略,且支持百万级目录缓存刷新
- 网络优化:TCP协议栈优化(cloudtcp)、KEEPALIVE优化
- 内容优化:内容传输压缩,图片内容优化,去除空白字符和注释
- 父层回源:BGP/多线机房部署父层节点,自动分配到源站最快的父层,提供集中缓存回源
数据分析系统
首先在weblog采集环节我们直接修改了nginx的access_log部分代码,使之兼容老配置的前提下,增加新的选项让记录的log变成了json 格式。这个地方有个坑需要注意,网上有很多基于log_format配置来生成json格式的weblog其中对json数据格式转义处理不当会造成很多 数据丢失。其次对于fluentd,flume,scribe等日志采集工具都基于正则元组提取出json格式化的数据,其中因为涉及到正则的匹配,难以 避免俩个问题:第一个问题是正则的性能,第二个问题是正则匹配不上造成的数据丢失。所以我们在nginx上做了这个变更。我们使用rsyslog v8版本对于全线的nginxlog进行收集传输到kafka集群,使用fluentd集群对kafka集群的数据进行实时的读取经过预处理后输出到 es,hdfs,和日志合并等操作。hdfs的数据交给hadoop做平台报表的离线计算,因为是第二次统计结果覆盖第一次所以我们把每次统计的结果存储 到redis内,交由平台程序处理。交给es的数据分俩部分一部分是全量的acceslog数据,提供给我们的运维和安全小伙伴们用来做实时的数据分析和 质量检测;另一部分丢给es的安全攻击log索引中,交由我们的客户分析使用。fluentd集群还对我们客户的日志进行合并存储起来提供下载。另外我们 用storm对日志进行实时的安全分析,这里做了很多有意思的事情,比如安全策略挖掘方面,通过storm我们可以实时的侦测到被其他厂商漏过来的攻击, 也可以发现一些我们遗漏的攻击数据,以此来完善我们的安全策略,并帮助其他厂商进行完善。也有无死角WEB漏洞扫描方面和webshell分析的有趣的事 情,这里暂时不做太多阐述,有机会再跟大家分享
稳定性保障
不管安全还是加速做的再好,业务最终还是建立在稳定的基础上。稳定是最重要的,所以牛盾云加速采取内外兼修之法,在做好自身稳定性的前提下也帮助用户源站增强稳定性。
对内:
- 四层和七层负载均衡
通过负载均衡来解决业务量不断上升所带来的业务量承载能力(分流),同时也很好的解决资源动态扩容,入口使用了四层负载均衡,双入口热备,业务层通过七层对业务进行分离,同时借助负载均衡,消除了到父层服务单点故障。
- 监控系统调度
通过监控平台,我们监控全国各个地区边缘到父层的质量、父层和源站的链路质量,进行自动调度能力。
对外:
- 宕机切换
支持填写多个IP,在主IP挂掉后能够自动帮助用户切到备IP完成故障的转移。 - 永久在线
这个是CDN本身的优势,当网站原服务器宕机时,用户仍然可以访问网站的缓存数据(此页面的样式可由客户自由定制),从而可以解决服务器故障带给访客的不良体验问题,并且不影响搜索引擎的收录。
- 7*24小时技术支持
资深的运维与技术支持人员轮班随时待命,为客户提供7×24小时的技术支持,快速响应处理用户问题。