写点什么

安全稳定 - 安全架构高可用

用户头像
garlic
关注
发布于: 2020 年 12 月 06 日
安全稳定-安全架构高可用

安全架构

Web 攻击与防护


  • XSS 攻击

诱导执行恶意脚本

存储型 Stored XSS Attacks

反射型 Reflected XSS Attacks

其他:DOM Based XSS


防御

危险的 html 进行转义和消毒


  • SQL 注入攻击

使用应用的漏洞, 生成恶意的 SQL


防御

使用 SQL 预编译参数绑定。


  • CSRF 攻击

跨站伪造请求,

防御

通过每次请求生成一个 token 值, 判断提交者是否合法

Referer check:HTTP 请求头的 referer 域中记录着请求来源。


  • ErrorCode

回显错误码


防御

报错时跳转指定错误页


  • HTML 注释

HTML 注释导致漏洞可以注入 js 代码

防御

代码扫描避免 html 注释漏洞

  • 文件上传

对上传文件无检测,导致可以上传可执行文件,引发漏洞

防御

设置上传文件白名单, 只允许上传可靠文件类型


  • 路径遍历

通过 URL 相对路径遍历服务器未开放的目录、文件

防御

是将 JavaScript、CSS 等资源文件独立服务器、独立域名,其他文件不使用静 态 URL 访问,动态参数不包含文件路径信息。 通过调整中间配置阻止访问。


  • Web 应用防火墙

WAF:

AWS 方案:

AWS WAF Security Automations


from https://aws.amazon.com/cn/solutions/implementations/aws-waf-security-automations/


Azure 方案:Azure Web Application Firewall


from https://docs.microsoft.com/en-us/azure/web-application-firewall/overview


支持 Oracle Cloud Infrastructure Web Application Firewall (WAF) Oracle EBS 部署方案



可以看到部署使用了内外网隔离, 在公网区域, 数据库区域部署 WAF


ModSecurity 是一个开源的 Web 应用防火墙


  • 网站安全漏洞扫描


网站安全漏洞扫描工具是根据内置规则,模拟黑客攻击行为,用以发现网站安全漏洞的 工具。许多大型网站的安全团队都有自己开发的漏洞扫描工具,不定期的对网站的服务 器进行扫描,查漏补缺


加密与解密


  • 单向散列加密

  • 对称加密

  • 非对称加密

  • 密钥安全管理与加解密服务系统架构



也可以选择采用硬件加密策略

反垃圾与风控


  • 贝叶斯分类算法


  • 布隆过滤器黑名单



  • 电商风控

  • 账户风险: 包括账户被黑客盗用,恶意注册账号等几种情形。

  • 买家风险: 买家恶意下单占用库存进行不正当竞争;黄牛利用促销抢购低价商品;此外还有 良品拒收,欺诈退款以及常见于 B2B 交易的虚假询盘等。

  • 卖家风险:不良卖家进行恶意欺诈的行为,例如货不对板,虚假发货,炒作信用等,此外还 有发布违禁商品、侵权产品等。

  • 交易风险: 信用卡盗刷,支付欺诈,洗钱套现等。


  • 规则引擎


  • 机器学习



高可用


可用性度量


  • 可用性指标

使用停机时间判断可用性指标

from wiki https://en.wikipedia.org/wiki/High_availability

  • 故障分级管理


  • 故障处理流程考核



  • 引起故障的原因

  • 硬件故障

  • 软件 BUG

  • 系统发布

  • 并发压力

  • 网路攻击

  • 外部灾难

提升可用性架构方案


  • 解耦

  • 高内聚,低耦合组件设计原则

  • 面向对象基本设计原则

  • 领域驱动设计建模

  • 隔离

  • 业务与子系统隔离

  • 微服务与中台架构

  • 生产者与消费者隔离

  • 虚拟机与容器隔离

  • 异步

  • 多线程编程

  • 反应式编程

  • 异步通讯网络编程

  • 事件驱动异步架构

  • 备份

  • 集群设计

  • 数据库复制

  • CAP 原理

  • 失效转移 Failover

  • 数据库主主失效转移

  • 负载均衡失效转移

关键是涉及无状态服务

  • 幂等

服务的重复调用和调用一次的结果相同

  • 事务补偿

传统事务 ACID

  • 原子性(Atomicity)

  • 一致性(Consistency)

  • 隔离性(Isolation)

  • 持久性(Durability)

分布式事务 BASE

  • 基本可用(Basic Availability)

  • 软状态(Soft-state)

  • 最终一致性(Eventual consistency)

通过事务的逆操作使得事务回滚到事务前的状态


  • 重试

由于远程服务故障(线程阻塞,垃圾回收, 网络抖动)

上游超时时间要大于下游调用超时时间之和。


  • 熔断

当服务出现故障时用断路器阻断对故障服务的调用


  • 限流

  • 计数器算法(固定窗口,滑动窗口)

  • 令牌桶算法: 先拿到授权再进入


  • 漏桶算法: 先放入再按照固定速率放行。



  • 自适应限流

PID Understanding PID Control



  • 降级

系统高并发时关闭,非核心系统功能,将资源留给核心系统使用。


  • 异地多活

数据中心分布在不同地点的机房中。

难点:数据一致性问题。 


架构运维方案


发布


自动化测试

使用自动化测试脚本或工具完成测试

工具:Selenium


自动化部署

  • 持续集成 工程师可以随时在分支提交代码进行自动化测试

  • 持续交付 将软件部署到各种测试环境

  • 持续部署 没有人工干预的情况下被测试, 构建, 部署到生产环境。



预发布验证

通过负载进行分流到预发布服务器, 验证新功能, 生产服务器保持原有版本。


代码版本控制

  • 主干开发,分支发布:

  • 分支开发,主干发布;

主干保持与生产环境一致, 分支进行开发 , 发布时打包不同的 tag,投产后如有如无问题, 合并到主干, 有问题, 从 TAG 迁出分支修复,后再次合并到主干。 (多分支开发)


自动化发布:

减少人处理过程中一些失误, 人员在此流程中进行审核, 如 QA, 安全, DBA 等流程人工的审核。


灰度发布:

针对大型网站, 将集群分为几个部分, 分阶段发布,防止发布问题导致大规模回滚



网站运行监控

不允许没有监控的系统上线


监控数据采集:

运行期监控,系统指标是否正常,如果收到报警能快速发现问题, 通过监控数据支持解决问题。

  • 用户行为日志收集

  • 服务器性能监控

  • 业务运行数据报告


监控管理

报警

自动控制: 自动失效转移;自动扩容;自动限流


监控系统架构


Open-Falcon : http://open-falcon.org/


高可用的价值观

  • 保持简单, 使得问题易于发现

  • 目标明确, 解决特定环境下的具体问题

  • 价值回归,成本收益要合理


高可用案例


  • 日志级别设置

  • 首页应为静态,不应访问数据库

  • 锁操作要谨慎,不同场景使用不同锁对象

  • 大规模使用缓存服务器情况下, 对缓存服务器谨慎操作防止缓存雪崩。

  • 启动服务先后台服务,再前端服务, 关闭服务先前端服务,再后台服务。

  • 针对不同文件类型,用途选用专用的服务器。

  • 生产操作要规范,取得授权后方可操作。

  • code view, 尽量通过 mock 端模拟测试,避免注释代码进行测试。

  • 对于程序入口检查,防止 null 值传入导致的异常。


参考及引用


架构师训练营作业-李智慧老师相关讲义

Photo by Brett Sayles from Pexels


用户头像

garlic

关注

还未添加个人签名 2017.11.15 加入

还未添加个人简介

评论

发布
暂无评论
安全稳定-安全架构高可用