【白帽子讲web安全】第一章 我的安全世界观(读书笔记)

  1. web安全简史
    1. 中国黑客简史
      1. 启蒙时代:中国互联网刚起步,不受利益驱使,分享自己的研究成果
      2. 黄金时代:中美黑客大战,更多年轻人加入到黑客组织中,同时以盈利为目的的攻击开始
      3. 黑暗时代:黑客精神(open\share\free)死亡,部分黑客步入黑色产业
    2. 黑客技术的发展历程
      1. 攻击系统软件:web技术还不成熟;攻击系统软件可以拿到root权限。eg:TESO写过一个攻击SSH的exploit入侵美国中情局
      2. 随着防火墙、ACL技术兴起,使得直接暴露在互联网上的系统得到了保护
      3. 2003年的冲击波蠕虫事件:网络运营商屏蔽了135、445等端口的连接请求。互联网安全开始被重视
      4. 暴露在互联网上的非web服务越来越少,web应用功能越来越强大。黑客开始将目光转向web
    3. web安全的兴起
      1. Web攻击技术发展
        1. 服务器端动态脚本的安全问题:将可执行脚本(webshell)上传到服务器从而获得权限
        2. SQL注入漏洞
        3. 跨站脚本攻击(XSS):eg:MySpace的XSS蠕虫事件
        4. ......
        5. web攻击开始由服务器转向客户端(浏览器、用户)
  2. 黑帽子,白帽子
    1. 角度:
      1. 白帽子:解决所有的安全问题,考虑问题需要更加全面宏观
      2. 黑帽子:入侵系统,找到有价值的数据,考虑问题的出发点有选择性、微观的
    2. 如果新技术不在一开始就考虑安全设计的话,防御技术就必然会落后于攻击技术
  3. 安全的本质
    1. 安全问题的本质就是信任的问题:我们必须有一些基本的假设(基础的信任),安全方案才能得以建立。
    2. 很少设想最极端的条件,因为极端的条件往往意味着小概率以及高成本。
    3. 把握信任条件的度,是设计安全方案的难点之处。
  4. 没有一劳永逸
    1. 安全是一个持续的过程。攻击、防御技术都在不断发展
    2. 安全开发流程----安全检查 要贯穿开发的整个生命周期
  5. 安全三要素(CIA)
    1. 机密性(confidentiality):保护数据内容不被泄露。(加密)
    2. 完整性(integrity):保证数据完整不被篡改(数字签名)
    3. 可用性(avilability):保护资源“随需而得”
    4. 设计安全方案时,以这三个要素为基本的出发点,全面思考问题
  6. 如何实施安全评估
    1. 资产等级划分
      1. 目的:明确要保护的目标。eg:目前互联网安全的核心问题是数据安全的问题
        1. 了解公司最看重得数据是什么
        2. 不同数据的重要程度
      2. 划分信任域和信任边界:eg:数据库的服务器 | web服务器 | internet
    2. 威胁分析
      1. 威胁:可能造成危害的来源称为威胁
      2. 漏洞:系统中可能被威胁利用以造成危害的地方。
      3. 威胁分析:找出所有的威胁
        1. 头脑风暴法(可能遗漏)
        2. 威胁建模(避免遗漏):eg:STRIDE模型(微软提出)
          1. spoofing(伪装):冒充他人身份 | 认证性
          2. tampering(篡改):修改数据或代码 | 完整性
          3. repudiation(抵赖):否认做过的事情 | 不可抵赖性
          4. information disclosure(信息泄露):机密信息泄露 | 机密性
          5. denial of service(拒绝服务):拒绝服务 | 可用性
          6. elevation of privilege(提升权限):未经授权获得许可 | 授权
    3. 风险分析
      1. 风险:可能出现的损失称为风险
      2. 影响风险的因素:损失的大小×可能性
      3. 衡量风险的模型:DREAD模型(微软提出)
        1. damage potential(破坏潜力):获取完整验证权限;执行管理员操作;非法上传文件--->泄露敏感信息---->泄露其他信息
        2. reproducibility(再现性):随时再次攻击--->可重复攻击,有次数限制--->很难重复攻击
        3. exploitability(可利用性):短暂学习即可攻击--->熟练攻击者才可--->利用条件十分苛刻
        4. affected users(影响用户):所有用户;默认配置;关键用户--->部分用户--->非默认配置--->极少数用户、匿名用户
        5. discoverability(可发现性):漏洞明显--->需深入挖掘漏洞--->发现该漏洞极其困难
      4. 再好的模型都是辅助工具。
    4. 设计安全方案
      1. 安全评估的产出物就是安全方案,要针对上述发现的问题给出。
      2. 思考如何通过简单有效的方案解决遇到的安全问题
      3. 安全方案需要有效抵抗威胁,但也不能干涉正常的业务流程
      4. 优秀的安全方案:
        1. 能够有效解决问题
        2. 用户体验好
        3. 高性能
        4. 低耦合
        5. 易于拓展和升级
  7. 白帽子兵法(设计安全方案的技巧)
    1. secure by default:更多使用白名单,系统会更安全(就是我规定了哪些是可以用的,其余都不可用)
      1. 黑名单、白名单(这个思路也是基于信任原则,信任白名单即安全):
        1. 如果网站只开放WEB服务,那就只开放80和443端口
        2. 工程师的电脑里面只允许安装允许使用的软件及对应版本
      2. 最小权限原则:系统只给予主体必要的权限
    2. 纵深防御原则
      1. 全面配合:不同层面、不同方面实施安全方案,不同安全方案之间相互配合
      2. 因地制宜:对各个问题实施针对性安全方案
    3. 数据与代码分离原则
      1. 使用:适用于由于“注入”而引发安全问题的场景;缓冲区溢出
    4. 不可预测性原则(从克服攻击方法的角度看问题):就是让攻击者猜不到
      1. eg:使用DEP使堆栈不可执行
      2. eg:使用ASLR使进程的栈基址随机变化,使攻击者无法猜到内存地址
      3. 常用于加密算法、随机数算法、哈希函数等

 

 

你可能感兴趣的:(web安全)