访问控制方法
访问控制管理
分为集中式和非集中式
目前主流的还是集中式管理
集中式认证服务
AAA服务:认证(authentication)、授权(authorization)、记账(accounting)
1、特点:
2、分布式安全架构:接入网络的设备(VPN、AP等)是分布式的,将他们的认证过程转发到3A服务器,集中实现各个设备的认证服务。
3、主流的3A服务器包括:radius(使用UDP)、TACACA+(使用TCP,思科私有协议)、DIAMETER(RADIUS的升级,4G/5G信令协议、漫游)
单次登录SSO
1、初代单次登录(伪单次):将所有密码写成一个脚本,执行一下就登录所有账号。缺点:会话劫持风险增加、消耗更多资源、攻击面增加(脚本)、改密码麻烦,依然要一个一个改
Kerberos协议
工作原理:
(1)用户先向KDC请求获取票证授予票证TGT(游乐场门票)
(2)用户要使用某一具体服务时,再向KDC提交TGT获取服务票证ST(过山车票)
(3)用户通过ST访问具体服务器,使用相应的服务
3、SESAME:欧洲版本的Kerberos,比Kerberos更复杂,几乎没人用
访问控制部署原则
1、访问的适当性主要遵循:
最小特权原则(least privilege):从安全审查工作角度来看
需知原则(need to know):从日常工作的角度来看
本质上两者都是一个东西,只是从不同的角度产生了两种不同的说法
访问控制类型
自助访问控制
由owner来决定
强制访问控制
设置安全标签
非自主访问控制
1、基于角色的访问控制、基于属性的访问控制
2、产生的原因是为了解决人员流动频繁管理不便的问题
基于上下文(context)的访问控制
例如:状态检测防火墙
基于内容(content)的访问控制
系统开销比较大
基于视图的访问控制(数据库的访问控制)
view(数据库术语):查询语言查询的结果保存在内存中的虚表,称之为视图
访问控制的威胁
1、口令破解
口令是最弱的防护机制
哈希加盐对彩虹表的攻击有防范意义
2、数据截获
3、社会工程
4、哄骗(Spoofing)
ID Theft
———–软件安全开发———–
本章目标
应用系统面临的威胁
1、缓冲区溢出
DEP数据执行保护 :将代码区和数据区分隔开,来自数据区的代码不会被CPU执行
ASLR地址空间随机化
2、大众程序员
非专业人员的编程,违反开发过程中的职责分离要求。
3、隐蔽信道
4、恶意代码
5、存储器重用/对象重用
突破进程隔离限制,内存没覆盖、硬盘没清空
6、可执行内容/移动代码
通过网络下载到本地执行的代码,如何对代码来源进行验证,以及如何约束此类代码运行的特权是应用安全关注的一个问题
7、检查时间/使用时间(TOC/TOU)
静态条件攻击,利用时间差进行攻击
8、后门/陷门
9、钓鱼
10、解释器注入
XSS、SQL、代码注入、模板注入
恶意代码
恶意代码分类
1、病毒
附着于其他可执行代码上
(1)文件感染型病毒
(2)引导区病毒
(3)混合型病毒
(4)邮件病毒
(5)宏病毒
(6)脚本病毒
2、蠕虫
不依附于其他文件独立存在,通过自我复制并感染其他设备
3、木马
多重攻击
蠕虫的一种攻击方式,同时使用多种方式进行恶意代码的传播
恶意代码控制
跨站脚本攻击XSS
破坏了同源策略
系统开发模型
系统开发方法
1、瀑布模型容易卡带
2、瀑布模型以前叫做系统开发生命周期模型
3、瀑布模型的一种开发方法:结构化编程开发
4、高内敛:每个模块尽量实现简单的功能
5、低耦合:模块之间的关系尽量简化
V-Model
一个测试模型,将上述测试与生命周期一一对应,使得测试工作做得更全面更好
原型法
1、解决瀑布模型代办问题的模型,是迭代模型的一种
2、工作原理
联合分析开发是一种人员交流的方法
探索和螺旋模型
探索模型:摸清市场需求的模型
螺旋模型:解决项目可行性风险的模型
DevOps
1、一种敏捷开发方式
2、流程自动化
3、提高流程效率
软件能力成熟度模型
基本理念:
CMMI:第二个阶段为“管理型”
量化管理:绩效管理