安全 & 高可用架构
互联网应用都是7*24小时提供服务,对系统的可用性面临巨大的压力。影响系统可用性包含:系统的稳定性、安全、性能等各方面。
安全架构
互联网的开放性,给我们生活、学习带来便利的同时,也给系统安全、稳定性、个人信息隐私带来了挑战。网站的攻击就是突破一层层的应用访问链路层的保护,导致系统的数据泄露、性能变差、进而引起系统不可用。
对于一个大型网站的攻击手段主要包含
1. web前端攻击
XSS攻击:无需登录,通过脚本在浏览器向网站注入JS等
SQL攻击:攻击者发送恶意的SQL命令或脚本,获取敏感数据、数据库表结构信息等
CSRF攻击:需登录,有会话的情况,利用JS漏洞攻击目标网站
其他:ErrorCode错误回显、HTML注释、文件上传(上传可执行命令)、路径遍历(遍历系统未开放的目录和文件)
2. 客户端攻击
模拟/更改设备相关信息:经纬度、设备指纹等其他
植入脚本:通过注入恶意代码片段,获取个人信息、绕过服务验证等
静态调试/动态调试:模拟客户端请求
3. 网络攻击
DDos
域名劫持
请求和响应报文的篡改、拦截
4. 数据泄露
秘钥泄露:服务器相关秘钥、商户秘钥、用户秘钥等
敏感数据泄露:用户密码、用户个人信息、用户订单信息等
5. 漏洞攻击
OS漏洞
容器软件漏洞
中间件漏洞
框架/库漏洞
应用程序本身漏洞
6. 其他
灰色产业
面临上面一些安全问题,有相应的一些解决方案。但系统的安全防护,是需要一个整体完整的解决方案,需要技术同时也需要管理。不然就会出现“水桶”原理中最短哪块板,利用它就可击破整个系统。
整体的安全架构如下
1. 前端web/客户端攻击防护
客户端防护:加固加壳、提示用户从正规渠道下载应用
XSS攻击:普通用户不能提交脚本,可通过编码、过滤(CSP,相当于白名单)、校正、消毒
SQL注入:消毒、SQL预编译参数绑定(DAO框架都有实现)、命令权限限制、IP白名单限制
CSRF攻击:提交表单时,需携带token, head验证令牌,验证码、Referer验证
其他:跳转统一的错误页面,自动扫描避免HTML注释漏洞、上传文件白名单限制(特定类型的文件)、上传到专门的存储文件服务器、静态文件放在单独服务使用单独域名、其他文件不使用静态URL访问增加动态参数不包含文件路径信息、反作弊、反爬
2. 网络攻击防护
DDos:流量对抗、风险识别等技术
域名劫持防护
硬件防火墙
HTTPS协议:全站实现HTTPS
Web应用防火墙:通过规则集合的可扩展性不断对漏洞防御进行升级。开源项目ModSecurity
网络入侵检测
主机入侵检测:主机防护,提供多病毒检测引擎,支持主流病毒自动查杀能力。支持实时全量采集数据,提供机器学习和150+关联检测模型来提升主机入侵检测效率。
3. 信息加密技术
单项散列加密:不可逆,通过salt增加安全性
对称加密:加密、解密使用同一个秘钥
非对称加密:公钥加密,私钥解密
签名/认证证书:私钥加签,公钥验签
4. 风险控制防护
建设一个系统安全、业务安全、内容安全三个方面,贯穿安全攻防、身份认证、风险评估和管控决策的多层次风险控制体系。风险包含:账号风险、买家风险、卖家风险、交易风险
贝叶斯分类:通过机器学习训练获取各特性值的全概率和先验概率,在线数据通过贝叶斯公式计算特性值集合的后验概率值进行分离,反垃圾场景使用
布隆过滤器:通过预先分配一段连续内存空间,利用8种算法计算得到一个二进制数值,存储在对用的内存中。这样来记录垃圾信息的地址或其他信息,可以节约大量的存储空间。可能存在错杀的情况,是宁可错杀一千,也不放过一个。 反垃圾场景使用
规则引擎:通过不断调整规则,通过规则引擎,识别高风险,然后进行人工审核。
机器学习:使用机器学习模型自动进行风险识别和执行策略。
5. 数据安全
秘钥安全管理
可通过加密机实现秘钥生成、存储、管理,提供加密、解密、加签、验签等服务
数据库安全
数据库审计系统——智能解析数据库通信流量,细粒度审计数据库访问行为,可以精准识别、记录云上数据安全威胁,为云端数据库提供全方位的安全、诊断、维护及合规能力。
敏感数据管理
支持海量数据迅速、精准识别敏感数据并锁定保护对象,对敏感数据提供实时和有效的保护。提供数据从敏感等级定义、敏感数据异常操作识别和响应处理、数据脱敏处理等全链路防护。
6. 安全服务
漏洞管理
根据内置规则,模拟黑客攻击行为,用以发现网站安全漏洞的工具。支持自动检测资产的漏洞和风险配置,提供修复建议,帮助巩固系统安全。提供漏洞一键修复与验证能力。
安全应急响应中心
提供云安全中心能力,实时监控安全事件并提供处理建议,对告警事件进行分析和检索,抵御恶意入侵。提供机器学习能力,量化分析威胁,预测潜在的安全风险。
应用安全评估
渗透测试
安全智能分析平台
高可用架构
高可用HA(High Availability)是分布式系统架构设计中必须考虑的因素之一,它通常是指,通过设计减少系统不能提供服务的时间。
高可用度量
1. 可用性指标
业界通常用多少个9来衡量网站的可用性,如腾讯微信的可用性4个9,即微信服务99.99%可用,只有0.01%的时间不可用,也就是一年中大约53分钟不可用。
网站年度可用性指标 = (1-网站不可用时间/年度总时间) * 100%
网站不可用时间(故障时间) = 故障修复时间 - 故障发现(报告)时间点
可用性影响因素很多,达到4个9,5个9除了过硬的技术、大量设备资金投入、工程师责任心、还有运气。
2. 故障管理
分级管理:S级故障(严重故障)、A类故障(核心功能不可用)、B类故障(核心功能少数用户不可用)、C类故障(其他类故障),可根据自身业务特点来划分
处理流程管理:
引起系统故障原因
参考:https://xie.infoq.cn/article/b5f4ae3f5e4d63f44b9e85497
保证系统高可用方案
1. 架构
参考:https://xie.infoq.cn/article/b5f4ae3f5e4d63f44b9e85497
2. 运维
版权声明: 本文为 InfoQ 作者【dony.zhang】的原创文章。
原文链接:【http://xie.infoq.cn/article/618c592bf671cd0f391a46193】。文章转载请联系作者。
评论