本文主要是介绍NISP 二级知识点总结——信息安全技术,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
密码学
密码学的发展历史
古典密码学
1.古典密码体制的安全性在于保持算法本身的保密性,受到算法限制。
- 不适合大规模生产
- 不适合较大的或者人员变动较大的组织
- 用户无法了解算法的安全性
2.古典密码主要有以下几种:
代替密码(Substitution Cipher) 换位密码(Transposition Cipher) 代替密码与换位密码的组合
古典密码学举例
扩散 VS. 混乱思想
- 扩散:将某一位明文数字的影响尽可能地散布到多个输出密文数字中去,以更隐蔽的明文数字的统计特性
- 扩散:使得密文的统计特性与明文、密钥之间的关系尽量复杂化
古代密码学分类
近代密码学
20世纪初到1949年:
- 主要标志是机械密码/机电密码,用机电代替手工。
- 近代密码体制是用机械或电动机械实现的,最著名的就是转轮机
一种理想的加密方案 一次一密码本
公钥密码学
密码学的基本概念
密码学相关术语
加密:将明文变转未密文的过程。把课懂的语言变换称不可懂的语言,这里的语言指人类能懂的语言和机器能懂的语言
解密:加密的过程,即由密文恢复出原明文的过程。把不可懂的语言变成可懂的语言
加密和解密算法的操作通常都是在一组密钥的控制下进行的,分别称为加密密钥(Encryption Key) 和解密密钥(Decryption Key)
密码学专业术语
- 密钥空间(keyspace):用于加密的密钥的比特序列长度。密钥是由密钥空间的随机值构成。密钥空间越大,密钥被攻破的难度就越大
- 现代密码学的密码系统中,加密算法大部分都是公开的,所以,可以唯一保护密码安全的就是密钥(Kerchhoff原理)。
- Kerchhoff假设:密码分析者知道双方使用的密码系统,包括明文的统计特性、加解密体制等,唯一不知道的是密钥。
- 密钥管理:处理密钥自产生到最终销毁的整个过程中的有关问题包括系统的初始化、密钥的产生、存储、备份/恢复、装入、分配、保护、更新、泄露、撤销和销毁等内容
- 扩散:将每一位明文数字的影响尽可能的散布到多个输出密文数字中去,以更隐匿明文数字的统计特性。
- 混乱:使得密文的统计特性与明文密钥之间的关系尽量复杂化。
Shannon称:在理想密码系统中,密文的所有统计特性都与所使用的密钥独立
密码分析的典型方式
- 唯密文攻击(cybertext only attack):
密码分析者知道一些消息的密文(加密算法相同),并且试图恢复尽可能多的消息明文,并进一步试图推算出加密消息的密钥(以便通过密钥得出更多的消息明文。
- 已知明文攻击(knownplaintext attack):
密码分析者不仅知道一些消息的密文,也知道与这些密文对应的明文,并试图推导出加密密钥或算法(该算法可对采用同一密钥加密的所有新消息进行解密。
- 选择明文攻击(chosen plaintext attack):
密码分析者不仅知道一些消息的密文以及与之对应的明文,而且可以选择被加密的明文(这种选择可能导致产生更多关于密钥的信息),并试图推导出加密密钥或算法(该算法可对采用同一密钥加密的所有新消息进行解密)。(暂时控制加密机)
- 旁路攻击(side channel)
通过收集“外面”的信息来破解密码,而不是直接处理“里面”的东西。
检测加解密过程所消耗的能量,所释放的辐射来计算过程时间。
- 重放攻击(replay attack)
攻击者捕获了一些类型的数据并重新提交它,寄希望于欺骗接收设备误以为这些是合法信息。
时间戳和序列号是对付重放攻击的两个对策。
- 统计式攻击
利用明文的已知统计规律进行破译的方法。密码破译者对截获的密文进行统计分析,总结出其统计规律,并与明文的统计规律进行对照比较,从中提取出明文和密文之间的对应或变换信息。
密码体制分类
- 受限制的算法 VS 基于密钥的算法
- 对称密码 VS 非对称密码
- 分组密码 VS 流密码
- 代替密码 VS 置换密码
受限制算法VS基于密钥的算法
- 受限制的(restricted)算法:算法的保密性基于保持算法的秘密
- 基于密钥(key-based)的算法:算法的保密性基于对密钥的保密性
对称密码 VS 非对称密码
- 对称密码算法(Symmetric cipher):加密密钥和解密密钥相同,或实质上等同,即从一个易于推出另一个。又称传统密码算法(Conventional cipher)、秘密密钥算法或单密钥算法。
- DES、3DES、IDEA、AES
- 非对称密码算法(Asymmetric cipher):加密密钥和解密密钥不同,从一个很难推出另一个。又叫公钥密码算法(Public—key cipher)。其中的加密密钥可以公开,称为公开密钥(public key),简称公钥;解密密钥必须保密,称为私人密钥(private key),简称私钥。
- RSA、ECC、ElGamal
分组密码 VS 流密码
- 分组密码(Block cipher):将明文分成固定长度的组,用同一密钥和算法对每一块加密,输出也是固定长度的密文。——DES、IDEA、 RC2、RCS
- 流密码(Stream cipher) :又称序列密码,序列密码每次加密一位或一字节的明文。RC4、 Vigenére、 Vernam
代替密码 VS 置换密码
- 代替密码(Substitution Cipher):就是明文中的每一个字符被替换成密文中的另一个字符。接收者对密文做反向替换就可以恢复出明文。
- 置换密码(Permutation Cipher) :又称换位密码(Transposition Cipher):明文的字 母保持相同,但顺序被打乱了。
密钥管理
- 密钥的生存周期
- 密钥的产生
- 密钥的分配
- 密钥管理的其它阶段
在一种安全策略指导下密钥的产生、存储、分配、删除、归档及应用。
处理密钥自产生到最终销毁的整个过程中的有关问题包括系统的初始化、密钥的产生、存储、备份/恢复、装入、分配、保护、更新、泄露、撤销和销毁等内容。
所有的密码技术都依赖于密钥。
密钥的管理本身是一个很复杂的课题而且是保证安全性的关键点。
密钥管理方法因所使用的密码体制对称密码体制和公钥密码体制而异。
密钥的生存周期:
授权使用该密钥的周期。一个密钥主要经历以下主要阶段:
产生、分配、使用、更新/替换、撤销、销毁。
原因:
1拥有大量的密文有助于密码分析一个密钥使用得太多了会给攻击者增大收集密文的机会.
2 假定一个密钥受到危及或用一个特定密钥的加密/解密过程被分析则限定密钥的使用期限就相当于限制危险的发生.密钥的生存期。
密钥的分配
- 无中心的密钥分配的模式
- 中心化密钥分配模式
- 公钥秘密体制的密钥分配
密钥管理的其他阶段
密钥使用
- 注意内存的密钥泄露。私钥不出USB Key。
密钥存储
- 现更多存储在Usb Key中。
密钥更新
- 更容易的解决办法是从旧密钥中产生新的密钥。公私钥对重新生成。
密钥备份
- 可信第三方托管或使用主密钥(公钥)加密保存。主要针对加密密钥。
密钥销毁(撤销不同)
- 物理上彻底粉碎。
密码学算法(对称、非对称)
加密密钥和解密密钥相同,或实质上等同
典型算法:DES、3DES、AES、IDEA、RC5、Twofish、CAST-256、MARS
有点:高效
不足:安全交换密钥问题及密钥管理复杂
数据加密标准(DES)
- DES是一种对称密钥算法,密钥长度为56bits(机上基偶校验,通常写成64bits)
- 分组加密算法,64 bits 为一个分组
- 基本思想:
- 混乱
- 扩散
- 使用标准的算数运算和逻辑运算
DES的产生与应用
1973年5月15日,NBS开始公开征集标准加密算法,并公布了它的设计要求:
(1)算法必须提供高度的安全性
(2)算法必须有详细的说明,并易于理解
(3)算法的安全性取决于密钥,不依赖于算法
(4)算法适用于所有用户
(5)算法适用于不同应用场合
(6)算法必须高效、经济
(7)算法必须能被证实有效
(8)算法必须是可出口的
DES的产生
1974年8月27日,NBS开始第二次征集,IBM提交了算法LUCIFER。1975年3月17日,NBS公开了全部细节。
1976年,NBS指派了两个小组进行评价。
1976年11月23日,采纳为联邦标准,批准用于非军事场合的各种政府机构。1977年1月15日,“数据加密标准”FIPS PUB 46发布。
发明人:美国IBM公司 W.Tuchman和C.Meyer
1971—1972年研制成功
基础:1967年美国Horst Feistel提出的理论
DES的应用
1979年,美国银行协会批准使用DES。
1980年,美国国家标准局(ANSI)同意DES作为私人使用的标准,称之为DEA(ANSI X.392)
1983年,国际化标准组织(ISO)同意将DES作为国际标准,称之为DEA—1
1998年12月以后,美国政府不再将DES作为联邦加密标准
DES算法流程
DES解密过程
DES的强度
高级数据加密标准(AES)
- 1997年4月15日,(美国)国家标准技术研究所(NIST)发起征集高级加密标准(Advanced Encryption Standard) AES的活动,活动目的是确定一个非保密的、可 以公开技术细节的、全球免费使用的分组密码算法,作为新的数据加密标准。对AES的基本要求是:比三重DES快、至少与三重DES一样安全、数据分组长度为128比特、密钥长度为128/192/256比特。
- 1997年9月12日,美国联邦登记处公布了正式征集AES候选算法的通告。作为进入AES候选过程的一个条件,开发者承诺放弃被选中算法的知识产权。
AES
对称密码算法的优缺点
- 优点:
- 效率高,算法简单,系统开销小
- 适合加密大量数据
- 明文长度与密文长度相等
- 缺点:
- 需要以安全方式进行密钥交换
- 密钥管理复杂
非对称密码算法
- 公钥、私钥
- 典型算法:RSA、ECC、EIGamal、DH
- 优点:解决密钥传递问题、密钥管理简单、提供数字签名等其它服务
- 缺点:计算复杂、耗用资源大
公钥密码的重要特性
单向陷门函数
Diffie-Hellman算法
1.第一个发表的公开密钥算法,1976
2.用于通信双方安全地协商一个会话密钥
3.只能用于密钥交换
4.数学基础:有限域内计算离散对数的困难性为基础
5.主要是模幂运算:ap mod n
DH 交换及密钥产生
RSA公钥密码体制
1977年由Ron Rivest、Adi Shamir和Len Adleman发明,1978年正式公布。
RSA是一种分组加密算法。明文和密文在0~n—1之间,n是一个正整数。
该算法的数学基础是初等数论中的Euler(欧拉)定理,并建立在分解大整数因子的困难性之上。
目前应用最广泛的公钥密码算法。
只在美国申请专利,且已于2000年9月到期。
数字签名算法(DSA)
1991年,NIST提出了数字签名算法(DSA),并把它用作数字签名标准(DSS),招致大量的反对,理由如下:
DSA不能用于加密或密钥分配
DSA是由NSA研制的,可能有后门
DSA的选择过程不公开,提供的分析时间不充分DSA比RSA慢(10-40倍)
密钥长度太小(512位)DSA可能侵犯其他专利RSA是事实上的标准
公钥密码体制的优缺点
- 优点:
- 解决密钥传递的问题
- 大大减少密钥持有量
- 提供了对称密码基数无法或很难提供的服务(数字签名)
- 缺点:
- 计算复杂、耗用资源打
- 非对称会导致得到的密文变长
散列函数与消息鉴别
哈希函数
- 任意长度的消息映射称一个较短的定长输出报文的函数
- 作用:完整性校验
- 主要算法:MD5、SHA-1
- 数学性质
- 单向性
- 弱抗碰撞性
- 强抗碰撞性
Hash函数的特点
- H能够应用到任意长度的数据上。
- H能够生成大小固定的输出。
- 对干任意给定的x,H(x)的计算相对简单。
- 对于给定的散列值h,要发现满足H(x)=h的x在计算上是不可行的。
- 对于给定的消息x,要发现另一个消息y满足H(y)=H(x)在计算上是不可行的。
- 主要的散列算法:MD5(128位)、SHA(160位)等
MD5 算法
MD:Message Digest , 消息摘要
- 输入:任意长度的消息
- 输出:128位消息摘要
- 处理:以512位输入数据块位单位
SHA-1算法
SHA(Secure Hash Algorithm,安全哈希算法)由美国国家标准基数研究所NIST开发,作为联邦信息处理标准于1993年发表(FIPS PUB 180),1995年修订,作为SHA-1(FIPS PUB 180-1),SHA-1 基于 MD4 设计
- 输入:最大长度位 264 位的消息;
- 输出:160位消息摘要;
- 处理:输入以512位数据块为单位处理
消息鉴别
- 对受到的消息进行验证,证明确实是来自声称的发送方,并且没有被修改过
- 作用:完整性校验、时间和顺序验证
- 消息认证方式
- Message encryption
- Hash function
- MAC
数字签名
附加在数据单元上的一些数据,或是对数据单元所做的密码变换,这种数据或变换能使数据单元的接收者确认数据单元来源和数据单元的完整性,并保护数据,防止被人伪造
作用
- 不可伪造性
- 不可否认性
- 保证消息完整性
基于RSA的数据签名——抵抗依赖性
数字签名的基本条件
- 签名者不能否认自己的签名
- 接受者能够验证签名,二其它任何人都不能伪造签名
- 当关于签名的真伪发生争执时,存在一个仲裁机构或第三方能够解决争执
密码学应用PKI体系
信息安全要素举例
- 鉴别
- 授权
- 机密性
- 完整性
- 防抵赖
非对称密码与解密
PKI体系
- PKI指的是公钥基础设施,CA指的是认证中心
- 公钥基础设施(Public Key Infrastructure)
- —利用公开密钥技术建立的提供信息安全服务的在线基础设施。它利用加密、数字签名、数字证书来保护应用、通信或事务处理的安全。
- 如同电力基础设施为家用电器提供电力一样,PKI为各种应用提供安全保障
PKI/CA是一组建立在公开密钥技术基础上的硬件、软件、人员和应用程序的集合,它具备生产、管理、存储、核发和废止证书的能力,从运营、管理、规范、法律、人员等多个角度来解决网络信任问题。
PKI体系对象 —— 四类实体
PKI是一种遵循标准、利用公钥加密技术提供安全基础平台的技术和规范,是能够为网络应用提供信任、加密以及密码服务及的一种基本解决方案
PKI体系对象—四类实体
CA(认证权威)
RA(注册权威)
证书存放管理(目录服务)
证书持有者和应用程序
数字证书
数字证书是一段电子数据,是经证书权威机构CA签名的、包含拥有者身份信息和公开密钥的数据体
数字证书格式
- 国际标准X.509定义一个规范的数字证书格式
数字证书的生命周期
- 证书申请、证书生成、证书存储、证书发布、证书废止
数字证书的基本内容
- 证书至少需要包括若夏内容
- 颁发机构
- 证书持有者的名字
- 证书持有者的公钥(标识)
- 证书有效期
- 证书颁发机构的签名
不同类型的证书
根证书
个人证书
代码签名证书
服务器证书
USB-KEY
CA: Certification Authority
CA数字证书的发放机构:
他是PKI的核心,其主要功能包括:
签发数字证书
- 签发证书
- 更新证书
管理数字证书
- 撤销、查询
- 审计、统计
验证数字证书
- 黑名单认证(CRL)
- 在线认证(OCSP)
RA:证书注册机构
证书注册权威
- Registration Authority
受理用户的数字证书申请
- 对证书申请者身份进行审核并提交CA制证
- 类似于申请身份证的派出所
提供证书生命期的维护工作
- 受理用户证书申请
- 协助颁发用户证书
- 审核用户真实身份
- 受理证书更新请求
- 受理证书吊销
目录服务(LDAP)
目录服务简单地讲是信息的存储库,提供了证书的保存,修改,删除和获取的能力
CA采用LDAP标准的目录服务存放证书,其作用与数据库相同优点是在修改操作少的情况下,对于访问的效率比传统数据库要高
PKI/CA技术的典型应用
CA工作流程
密码学应用VPN技术
VPN的定义
VPN的类型
- 按协议层次
- 可以分为二层VPN,三层VPN、四层VPN和应用层VPN
- 按照应用范围
- 远程访问VPN、内网VPN和外联网VPN
- 按体系结构
- 网关到网关VPN、主机到网关VPN和主机到主机的VPN
按体系结构分类VPN
VPN的工作原理及关键技术
- 隧道技术
- 加解密技术
- 密钥管理技术
- 使用者与涉笔身份认证技术
- 访问控制技术
隧道技术
- 本质区别在于用户在隧道中传输的数据包是被封装在哪种数据包中。
- 隧道技术按其拓扑结构分为点对点隧道和点对多隧道,而VPN主要采用点对点隧道。
- 目前存在多种VPN 隧道,包括L2TP、PPTP、IPSec、MPLS、 SSL
VPN有关协议的工作原理
- 二层隧道协议
- IPSec协议
- SSL协议
二层隧道协议主要有三种:
PPTP:微软、Ascend、3COM等公司支持。
L2F:Cisco、北方电信等公司支持,在Cisco路由器中有支持。
L2TP:由IETF起草,微软、Ascend、Cisco、3COM 等公司参 与,结合了上面两个协议的优点,成为有关二层隧道协议的的工业标准。
IPSec协议
- IPSec协议实际上是一个协议包而不是一个单个的协议。自从1995年IPSec的研究究工作开始以来,现在已经积累了大量的标准文件集。
- IPSec的安全协议由三个主要的协议组成,它由下图的第二层以及加密和认证算法组成。
- Internet安全协商和密钥管理协议(ISAKMP)是IPSec的另 一个主要组件。ISAKMP提供了用于应用层服务的通用格式,它支持IPSec协商方的密钥管理需求。
封装协议:ESP/AH
密钥管理协议:IKE
IPSEC封装协议
封装协议定义了ipsec数据包的封装结构,加密和认证结构。
Ipsec支持两种封装协议:ESP和AH
不同类型的VPN结构,IPSEC提供两种模式的封装:Tunnel和Transport
AH 认证头部
- AH主要提供数据来源认证、数据完整性验证和防报文回放攻击功能。
- AH不提供机密性保证使用50作为协议号
- 包含两种模式:传输模式和隧道模式。
- 隧道模式需要为每个包创建一个新的IP包头。
- 传输模式不需要创建新的IP包头。
AH隧道模式封装结构
负载安全封装(ESP)
- 除了AH协议的功能外,ESP还提供对IP报文的加密功能
- 可以实现 加密ip抱后面的所有数据
- 使用50作为协议号
- 包括两种模式:隧道模式和传输模式
ESP隧道冒失封装结构
ESP报头结构
SA-安全联盟
安全联盟(SA)是构成ipsec的基础。
SA是两个通信实体经协商建立起来的一种协定。他们决定了用来保护数据包安全的IPsec协议(esp或ah模式transport或tunnel),转码方式(加密方式md5、 aes、des),密钥及密钥(密钥的时间长度等等)的有效存在时间等等。
任何lpsec实施方案始终会构建一个sa数据库(SADB),由它来维护ipsec协议用来保障数据包安全的sa记录。
SA“安全联盟”如何建立
SA的创建可以由管理员人工的配置完成
但是,手工维护容易出错,而且手工建立的SA没有生存周期限制,永不过期,除非手工删除,因此有安全隐患。
SA的创建也可以通过某些协议来自动协商完成。
动态完成,可以解决手工配置的问题
Internet Key Exchange
IKE能够自动的实现密钥交换,简化了收购配置上的复杂性,同时也解决了IPsec难以扩展的特性。其主要功能:
- 协商SA的安全特性
- 密钥的自动生成
- 易于管理的配置
ISAKMP协议
ISAKMP (Internet Security Association Key Management Protocol, Internet安全联盟密钥管理协议):RFC2408。
定义了协商、建立、修改和删除SA的过程和包格式。
ISAKMP只是为协商、修改、删除SA的方法提供了一个通用的框架,并没有定义具体的SA格式。这个通用的框架是与密钥交换独立的,可以被不同的密钥交换协议使用。
ISAKMP报文可以利用UDP或者TCP,端口都是500,一般情况下常用UDP协议。
Isakmp协议阶段和协商模式
Isakmp协商阶段和协商模式
阶段一:
认证对等体、协商安全安联(安全联盟)两种工作模式:Main mode 和 aggressive mode
阶段二:
协商IPsec SAs/SPIs 单一工作模式:快速模式
IKE阶段一完成后会产生一个共享密钥,用于阶段二的数据加密使用.
IKE第一阶段 - 协商SA参数
IPSec与IKE的关系
SSL协议
SSL(Secure socket Layer),安全套接层协议,由netscape公司提出。
TLS (Transport Layer Security),是IETF的TLS工作组在SSL3.0基 础之上提出的安全通信标准。
使用公开密钥体制和X.509数字证书技术保护信息传输的机密性和完整性,适用于点对点之间的信息传输,常用Web Server方式。
位于TCP层之上、应用层之下,为上层应用在网络间建立一条安全通道。
提供:服务器认证、客户认证(可选)、链路上的数据完整性和数据保密性等保护功能。
SSL协议
在TCP/IP协议族中,SSL位于TCP层之上、应用层之下。
可以独立于应用层,从而使应用层协议可以直接建立在SSL之上。
包含: SSL记录协议、SSL握手协议、SSL更改密码说明协议和SSL警告协议。
SSL记录协议:所有的传输数据都被封装在记录中,提供机密性和完整性两种服务
SSL记录协议:包括记录头和记录数据格式
SSL握手协议:这个协议使服务器和客户端相互认证身份、协商加密和MAC算法以及用来保护在SSL记录中发送数据的加密应用,在传输任何数据前,都必须使用握手协议
SSL协议安全性
保密性
- 对于每个连接都有唯一的会话密钥采用对称密码体制加密会话数据。
完整性
- 保障传输数据完整性
- 采用HMAC
可鉴别性
- 使用非对称算法,支持使用数字证书鉴别
- 单向、双向鉴别
SSL协议主要过程
HTTPS
IPSec VPN 和 SSL VPN的比较
网络协议安全
ISO/OSI 七层模型结构
第一层:物理层
- 作用
- 定义物理链路的电器、机械、通信规程、功能要求等;
- 电压,数据速率,最大传输距离,物理连接器
- 线缆,物理介质
- 定义物理链路的电器、机械、通信规程、功能要求等;
- 典型物理层设备
- 光纤、双绞线中继器、集线器等
- 常见物理层标准(介质与速率)
- 100BaseT,OC-3,OC-12,DS1,DS3,E1,E3
第二层:数据链路层
- 作用
- 物理寻址,网络拓扑,线路规章等
- 错误检测和通告(但补纠错)
- 将比特聚成帧进行传输
- 流量控制(可选)
- 寻址机制
- 使用数据接收设备的硬件(物理地址)寻址(如MAC地址)
- 典型数据链路层设备
- 网卡、网桥和交换机
- 数据链路层协议
- PPP,HDLC,FR
- Ethernet,Token Ring,FDDI
- LLC (Logical Link Control) -IEEE 802.2
- 为上层提供统一接口;
- 使上层独立于下层物理介质;提供流控、排序等服务;
- MAC (Media Access Control)
- IEEE 802.3
- 烧录到网卡ROM;
- 48比特;
- 唯一性;
第三层:网络层
- 作用
- 逻辑寻址
- 路径选择
- 寻址机制
- 使用网路层地址进行寻址(如IP地址)
- 网络层典型设备
- 路由器
- 三层交换机
第四层:传输层
- 作用
- 提供端到端的数据传输服务
- 建立逻辑连接
- 寻址机制
- 应用程序的界面端口(如端口号)
- 传输层协议
- TCP
- UDP SPX
第五层:会话层
- 作用
- 不同应用程序的数据隔离
- 会话建立,维持,中止
- 同步服务
- 会话控制(单向或双向)
第六层:表示层
- 作用
- 数据格式表示
- 协议转换
- 字符转换
- 数据加密/解密
- 数据压缩等
- 表示层数据格式
- ASCII,MPEG,TIFF,GIF,JPEG
第七层:应用层
- 作用
- 应用接口
- 网络访问流处理
- 流控
- 错误恢复
- 应用层协议
- FTP,Telnet,HTTP,SNMP,SMTP,DNS
分层结构的优点
- 降低复杂性
- 促进标准化工作
- 各层间相互独立,某一层的变化不会影响其他层
- 协议开发模块化
- 简化理解与学习
数据封装与分用
- 数据封装
- 应用数据发送时从高层向底层逐层加工后传递
- 数据解封层
- 数据接收时从底层向高层逐层传递
OSI 模板与 TCP/IP 协议的对应
TCP/IP 协议
网络接口层安全
网络接口层
- 主要协议
- ARP
- RARP
- 安全问题
- 损坏:自然灾害、动物破坏、老化、误操作
- 干扰:大功率电器/电源线路/电磁辐射
- 电磁泄漏:传输线路
- 电磁泄漏-欺骗:ARP欺骗
- 嗅探:常见二层协议是明文通信的(以太、arp等)
- 拒绝服务:mac flooding,arp flooding等
ARP欺骗基础 - ARP协议工作过程
ARP欺骗实现
ARP欺骗防御
- 使用静态ARP缓存
- IP与MAC地址绑定
- ARP防御工具
互联网络层安全
- IP是TCP/IP协议族中最为核心的协议
- IP协议的特点
- 不可靠(unreliable)通信
- 无连接(connectionless)通信
网络互连层安全问题
- 拒绝服务:分片攻击(teardrop)/死亡之ping
- 欺骗:IP源地址欺骗
- 窃听:嗅探
- 伪造:IP数据包伪造
IP首部构造
Ping of Death
Ping是一个非常著名的程序,这个程序的目的是为了测试另一台主机是否可达。现在所有的操作系统上几乎都有这个程序,它已经成为系统的一部分。
Ping程序的目的是为了查看网络上的主机是否处于活动状态。
通过发送一份ICMP回显请求报文给目的主机,并等待返回ICMP回显应答,根据回显应答的内容判断目的主机的状况。
Ping之所以会造成伤害是源于早期操作系统在处理ICMP协议数据包存在漏洞。
ICMP协议的报文长度是固定的,大小为64KB,早期很多操作系统在接收ICMP数据报文的时候,只开辟64KB的缓存区用于存放接收到的数据包。一旦发送过来的ICMP数据包的实际尺寸超过64KB(65536B),操作系统将收到的数据报文向缓存区填写时,报文长度大于64KB,就会产生一个缓存溢出,结果将导致TCP/IP协议堆栈的崩溃,造成主机的重启动或是死机。
Ping程序有一个“—I”参数可指定发送数据包的尺寸,因此,使用Ping这个常用小程序就可以简单地实现这种攻击。例如通过这样一个命令:
Ping -I 65540 192.168.1.140
如果对方主机存在这样一个漏洞,就会形成一次拒绝服务攻击。这种攻击被称为“死亡之Ping”
现在的操作系统都已对这一漏洞进行了修补。对可发送的数据包大小进行了限制。
在Windows xp sp2操作系统中输入这样的命令:Ping -I 65535 192.168.1.140
系统返回这样的信息:
Bad value for option -l,valid range is from 0 to 65500.
Ping Of Death攻击的攻击特征、检测方法和反攻击方法总结如下:—攻击特征:该攻击数据包大于65535个字节。由于部分操作系统接收到长度大于65535字节的数据包时,就会造成内存溢出、系统崩溃、重启、内核失败等后果,从而达到攻击的目的。
检测方法:判断数据包的大小是否大于65535个字节。
反攻击方法:使用新的补丁程序,当收到大于65535个字节的数据包时,丢弃该数据包,并进行系统审计。
泪滴(Teardrop)
“泪滴”也被称为分片攻击,它是一种典型的利用TCP/IP协议的问题进行拒绝服务攻击的方式,由于第一个实现这种攻击的程序名称为Teardrop,所以这种攻击也被称为“泪滴”。
Smurf攻击
Smurf攻击是利用IP欺骗和ICMP回应包引起目标主机网络阻塞,实现DoS攻击。
Smurf攻击原理:在构造数据包时将源地址设置为被攻击主机的地址,而将目的地址设置为广播地址,于是,大量的ICMP echo回应包被发送给被攻击主机,使其因网络阻塞而无法提供服务。
比Ping of Death洪水的流量高出1或2个数量级。
传输层安全
传输层TCP协议
- 传输层控制协议:提供面向连接的、可靠的字节流服务
- 提供可靠性服务
- 数据包分块、发送接受确认、超时重发、数据校验、数据包排序、控制流量
传输层协议UDP协议
- 用户数据报协议:提供面向事务的简单不可靠信息传送服务
- 特点
- 无连接、不可靠
- 协议简单、占用资源少、效率高
TCP首部-端口号
TCP/UDP 通过16bit端口号来识别应用程序
- 知名端口号由Internet号分配机构(InternetAssigned Numbers Authority,IANA)来管理
现状
- 1—255端口号分配给知名的网络服务
- 256—1023分配给Unix操作系统特定的服务
- 1024 ~5000 临时分配的端口号5000以上端口号保留给应用服务
传输层安全问题
- 拒绝服务:syn flood/udp flood、Smurf
- 欺骗:TCP会话劫持
- 窃听:嗅探
- 伪造:数据包伪造
SYN“洪水”攻击示意图
此时,目标主机再也收不到刚才那些正常的网络包,只有DoS包。
大家注意一下,这里所有的Syn Flood攻击包的源地址都是伪造的,给追查工作带来很大困难。
这时在被攻击主机上积累了多少Syn的半连接呢?用netstat来看一下:
netstat -an | grep SYN。
SYN“洪水”的防御
- SYN洪水攻击比较难以防御,以下是几种解决方法:
- 缩短SYN Timeout时间
- 设置SYN Cookie
- 负反馈策略
- 退让策略
- 分布式DNS负载均衡
- 防火墙
UDP Flood
1)大量UDP小包冲击应用服务器(DNS、Radius认证等)
2)利用系统服务形成流量(Echo chargen)
3)利用正常UDP服务发送大流量形成网络拥塞
UDP洪水(UDP flood)主要是利用主机能自动进行回复的服务(例如使用UDP协议的chargen服务和echo服务)来进行攻击。
很多提供WWW和Mail等服务设备通常是使用Unix的服务器,它们默认打开一些被黑客恶意利用的UDP服务。如echo服务会显示接收到的每一个数据包,而原本作为测试功能的chargen服务会在收到每一个数据包时随机反馈一些字符。
LAND攻击
运用IP Spoofing技术送出一连串SYN数据包给目标主机,让目标主机系统误以为这些数据包是由自己发送的。由于目标主机在处理这些数据包的时候,它自己并无法回应给自己SYN—ACK数据包,因而造成系统当机。
Land是因特网上最常见的拒绝服务攻击类型,它是由著名黑客组织rootshell发现的。
原理很简单,向目标机发送大量的源地址和目标地址相同的包,造成目标机解析Land包时占用大量的系统资源,从而使网络功能完全瘫痪。
应用层安全
应用层协议
应用层协议定义了运行在不同端系统上的应用程序进程如何相互传递报文
典型的应用层协议
- 域名解析:DNS
- 电子邮件:SMTP/POP3
- 文件传输:FTP
- 网页浏览:HTTP
应用层协议安全问题 —— 明文
DNS欺骗基础 — DNS协议工作过程
DNS欺骗实现
应用层协议安全问题
拒绝服务:超长URL链接
欺骗:跨站脚本、钓鱼式攻击、cookie欺骗窃听:数据泄漏
伪造:应用数据篡改
暴力破解:应用认证口令暴力破解等
鉴别与访问控制
身份鉴别
标识与鉴别
标识的概念:标识是实体身份的一种计算机表达,每个实体与计算机内部的一个身份表达绑定
鉴别:确认实体是它所声明的,提供了关于某个实体身份的保证,某一实体确信与之打交道的实体正是所需要的实体
标识与鉴别的作用
- 作为访问控制的一种必要支持,访问控制的执行依赖于确知的身份
- 作为数据源认证的一种方法
- 作为审计追踪的支持
鉴别的基本概念
鉴别系统的构成
验证者、被验证者、可信赖者
鉴别的类型
单向鉴别、双向鉴别、第三方鉴别
鉴别的方式
- 基于实体所知(知识、密码、PIN码等)
- 基于实体所有(身份证、钥匙、智能卡、令牌等)
- 基于实体特征(指纹,笔迹,声音,视网膜等)
- 双因素、多因素认证
基于实体所知的鉴别
使用最广泛的身份鉴别方法
实现简单、成本低
提供弱鉴别
面临的威胁
暴力破解
木马窃取
线路窃听
重放攻击
密码暴力破解安全防护
暴力破解防护
使用安全的密码(自己容易记,别人不好猜)
系统、应用安全策略(帐号锁定策略)
随机验证码
变形
干扰
滑块
图像识别
木马窃取密码安全防护
使用密码输入控件
安全的输入框,避免从输入框中还原密码软键盘,对抗击键记录
随机排列字符,对抗屏幕截图重现
密码嗅探攻击安全防护
- 加密:单向函数
- 攻击者很容易构造一张q与p对应的表,表中的p尽可能包含所期望的值
- 解决办法:在口令中使用随机数
一次性口令:每次鉴别中所使用的密码不同—有效应对密码嗅探及重放攻击
实现机制
两端共同拥有一串随机口令,在该串的某一位置保持同步
两端共同使用一个随机序列生成器,在该序列生成器的初态保持同步—使用时间戳,两端维持同步的时钟
挑战机制
客户端:请求登录
服务器:给出随机数作为挑战请求
将登录信息(用户名、密码)与随机数合并,使用单向函数(如MD5)生产字符串,作为应答返回服务器
服务认证后返还结果
基于实体所有的鉴别
采用较多的鉴别方法
使用用户所持有的东西来验证用户的身份用于鉴别的东西通常不容易复制
鉴别物体
IC卡(Integrated Circuit Card)是将一个微电子芯片嵌入符合卡基,做成卡片形式的信息载体
- 内存卡
- 逻辑加密卡
- CPU卡
特点
难以复制、安全性高
安全威胁及防护
损坏
封装应坚固耐用,承受日常使用中各种可能导致卡片损坏的行为
复制
保证IC卡中存储和处理的各种信息不被非法访问、复制、篡改或破坏PIN码甚至其他技术实现对数据的安全防护
确保逻辑安全措施得到落实
基于实体特征的鉴别
- 使用每个人所具有的唯一生理特征
- 鉴别的方式
- 指纹,掌纹,静脉
- 虹膜,视网膜
- 语音
- 面部扫描
鉴别系统的有效性判断
- 错误拒绝率(FRR)
- 错误接受率(FAR)
- 教程错判率(CER):FRR=FAR的交叉点,CER用来反映系统的准确度
身份鉴别
单点登录基本概念
单点登录概念
单一身份认证,身份信息集中管理,一次认证就可以访问其授权的所有网络资源—单点登录实质是安全凭证在多个应用系统之间的传递或共享
Kerberos协议
什么是Kerberos协议
- 1985年由美国麻省理工学院开发,用于通信实体间的身份认证,1994年V5版本作为
- Internet标准草案公布
- 基于对称密码算法为用户提供安全的单点登录服务
- 包含可信第三方认证服务
Kerberos协议的优点
- 避免本地保存密码及会话中传输密码
- 客户端和服务器可实现互认
Kerberos体系构成
运行环境构成
- 密钥分发中心(KDC)
- 系统核心,负责维护所有用户的账户信息
- 由AS和TGS两个部分构成
- 认证服务器(AS:Authentication Server)
- 票据授权服务器(TGS:Ticket Granting Server)
- 应用服务器
- 客户端
其他概念
- 票据许可票据(TGT)
- 服务许可票据(SGT)
三次通讯
Kerberos 工作过程获取 TGT
Kerberos 工作过程获取 SGT
Kerberos 工作过程获取 活动服务
AAA协议
访问控制
什么是访问控制模型
—对一系列访问控制规则集合的描述,可以是非形式化的,也可以是形式化的。组成
组成
访问控制模型的分类
自动访问控制模型
什么是自主访问控制模型(DAC)
- 客体的属主(创建者)决定该客体的访问权限灵活,
- 具有较好的易用性和可扩展性
- 安全性不高
实现机制
- 访问控制表/矩阵
实现方式
- 访问控制表(Access Control Lists)
- 访问能力表(Capacity List)
访问学科与访问模式
访问许可(Access Permission):
描述主体对客体所具有的控制权
定义了改变访问模式的能力或向其它主体传送这种能力的能力
访问模式:
描述主体对客体所具有的访问权
指明主体对客体可进行何种形式的特定访问操作:读/写/运行
访问许可的类型
- 等级型(Hierarchical)
- 有主题型(Owner)
每个客体设置一个拥有者(一般是客体的生成者),拥有者是唯一有权修改客体访问控制表的主体,拥有者对其客体具有全部控制权
- 自由型(Laissez-faiire)
自主访问控制模型实现方式
访问控制表
- 权限与客体关联
- 在客体上附加一个主体明细表的方法来表示访问控制矩阵的
访问能力表
- 权限与主体关联
- 为每个用户维护一个表,表示主体可以访问的客体及权限
访问控制表与访问能力表的比较
自主访问控制的特点
优点:
根据主体的身份和访问权限进行决策
具有某种访问能力的主体能够自主地将访问权的某个子集授予其它主体
灵活性高,被大量采用
缺点:
安全性不高
信息在传递过程中其访问权限关系会被改变
强制访问控制模型
- 理解强制访问控制模型的概念及特点;
- 了解Bell—LaPadula模型的作用及特点;
- 了解Biba模型的作用及特点;
- 了解Clark—Wilson的作用及特点;
- 了解Chinese Wall模型的作用及特点;
什么是强制访问控制(MAC)
主体和客体都有一个固定的安全属性,系统用该安全属性来决定一个主体是否可以访问某个客体
特点
安全属性是强制的,任何主体都无法变更
安全性较高,应用于军事等安全要求较高的系统
BLP模型
1973年提出的多级安全模型,影响了许多其他模型的发展,甚至很大程度上影响了计算机安全技术的发展
Biba模型
1977年,Biba提出的一种在数学上与BLP模型对偶的完整性保护模型-Clark-Wilson模型
1987年,David Clark和David Wilson开发的以事务处理为基本操作的完整性模 型,该模型应用于多种商业系统
Chinese Wall模型
1989年,D.Brewer和M.Nash提出的同等考虑保密性与完整性的安全策略模型,主要用于解决商业中的利益冲突
BLP模型
BLP模型概念
- 由D. Elliott Bell和Leonard J. LaPadula于1973年提出的一种模拟军事安全策略的计算机
- 访问控制模型,简称为BLP模型
- 第一个严格形式化的安全模型
- 多级访问控制模型,用于保证系统信息的机密性
BLP模型访问控制策略
- 包括自主安全策略与强制安全策略
- 强制安全策略为每一个主体和客体都分配了安全级,根据安全级进行访问控制
BLP模型的组成
- 主体集:S
- 客体集:O
- 安全级:密级和范畴
- 密级:绝密、机密、秘密、公开
- 范畴:军事,外交,商务…
安全级之间支配关系(密级高于或等于、范畴包含)
- 例如L=<机密,{外交,商务}>,L'=<秘密,{商务}>,则L支配L'
BLP模型规则
(一)BLP模型规则:机密性
- 不上读:主体不可读,安全级别高于它的课题;
- 不下写:主体不可将信息写入安全级别低于它的客体;
(二)当一个高等级的主体必须与另一个低等级的主体通信,即高等级的主体写信息到低等级的客体,以便低等级的主体可以读
- 主体有一个最高安全等级和一个当前安全等级,最高安全等级必须支配当前等级
- 主体可以从最高安全等级降低下来,以便与低安全等级的实体通信
第一个安全策略形式化的数学模型多级安全模型,强调机密性
访问控制机制(两个重要规则)
不上读:主体不可读,安全级别高于它的课题;
不下写:主体不可将信息写入安全级别低于它的客体;优点:机密性高,有效的防止机密信息泄露
缺点:完整性缺乏,非法篡改、破坏成为可能
Biba模型
Biba模型概念
- 1977年由Biba提出,与BLP模型数学上对偶的完整性保护模型
- 多级访问控制模型,保护数据完整性
Biba模型的访问控制策略
- 强制安全策略为每一个主体和客体都分配了完整级,根据完整级进行访问控制
Biba模型的构成
完整级:安全级和范畴
- 安全级:极为重要,非常重要,重要,…
- 范畴:军事,外交,商务…
完整级存在支配关系
- 与BLP类似,安全级高于或等于,范畴包含
安全策略
- 向上读:主体可以读客体,当且仅当客体的完整级别支配主体的完整级
- 向下写:主体可以写客体,当且仅当主体的完整级别支配客体的完整级
强调完整性的访问控制策略模型
多级安全模型,数学上与BLP模型对偶访问控制机制(两个重要规则)
- 向下写
- 向上读
优点:完整性高,有效的防止非法篡改、破坏缺点:机密性缺乏,无法保护机密信息泄露
强制访问控制模型-Clark-Wilson
Clark-Wilson模型概念
由计算机科学家David D.Clark和会计师David R.Wilson发表于1987年 确保商业数据完整性的访问控制模型,侧重于满足商业应用的安全需求
Clark-Wilson模型的访问控制策略
每次操作前和操作后,数据都必须满足这个一致性条件
Clark-Wilson模型的目标
解决商业系统最关心的问题:系统数据的完整性以及对这些操作的完整性
一致性状态:数据满足给定属性,就称数据处于一个一致性状态
实例:
- 今天到目前为止存入金额的总数:D
- 今天到目前为止提取金额的总数:W
- 昨天为止所有账户的金额总数:YB
- 今天到目前为止所有账户的金额总数:TB
- 一致性属性:D+YB-W=TB
Clark-Wilson模型
- 自由数据条目 Unconstrained Data Item(UDI)
- 受限数据条目 Constrained Data Item(CDI)
- 转换程序 Transformation Procedure(TP)
- 完整性检查程序 Integrity Verification Procedure (IVP)
Clark-Wilson模型的组成
是一种等同考虑保密性与完整性的访问控制模型,主要解决商业应用中的利益冲突问题,它在商业领域的应用于BLP模型在军事领域的作用相当。
公司数据集CD:与某家公司相关的若干客体
利益冲突(COI)类:若干相互竞争的公司的数据集
若干有竞争关系数据集构成了利益冲突类
- 银行COI类(银行a、银行b、银行c)
- 石油公司COI类(公司W、公司x、公司u、公司v)
自主访问控制与强制访问控制的比较
自主访问控制
- 细粒度
- 灵活性高
- 配置效率低
强制访问控制
- 控制粒度大
- 灵活性不高
- 安全性强
基于角色的访问控制
基于角色的访问控制(RBAC)模型
系统内置多个角色,将权限与角色进行关联用户必须成为某个角色才能获得权限
基于角色访问控制模型访问控制策略
根据用户所担任的角色来决定用户在系统中的访问权限
用户必须成为某个角色,且还必须激活这一角色,才能对一个对象进行访问或执行某种操作
RBAC 模型构成
RBAC模型四种类型
RBACO,基本模型,规定了所有RBAC的基本内容,四种要素,用户(U)、角色(R)、会话(S)和权限(P)
RBAC1:包含RBACO,加入安全等级及角色继承关系
RBAC2:包含RBACO,加入约束条件,例如财务和会计不能为同一人
RBAC3:结合了RBAC1、RBAC2
基于规则的访问控制
基于规则的访问控制模型特点
- 在RBAC模型的基础上加入规则实现了企业安全策略的灵活动态调整
模型类型
- 功能级访问控制模型
- 数据集访问控制模型
特权管理基础设施
PMI是什么
- 与应用相关的授权服务管理
- 建立在PKI提供的可信的身份认证服务的基础
- 采用基于属性证书的授权模式
PMI的主要功能
- 对权限管理进行了系统的定义和描述
- 系统地建立起对用户身份到应用授权的映射
- 支持访问控制等应用
PMI体系架构
PKI
“你是谁”
身份与公钥绑定
身份鉴别(护照)
RCA-CA-RA, LDAP, CRL
PMI
“你能做什么”
身份(角色)与角色(属性、权限)绑定
授权管理(签证)
SOA-AA-ARA, LDAP, ACRL
操作系统安全
操作系统的功能
用户与计算机硬件之间的接口
操作系统为用户提供了虚拟计算机,把硬件的复杂性与用户隔离计算机系统的资源管理者
- CPU管理
- 存储管理
- 设备管理
- 用户进程
- 文件管理
- 网络与通信管理
- 系统调用接口
- 用户接口
操作系统安全目标
- 标识系统中的用户和进行身份鉴别
- 依据系统安全策略对用户的操作进行访问控制,防止用户和外来入侵者对计算机资源的非法访问
- 监督系统运行的安全性
- 保证系统自身的安全和完整性
标识与鉴别
- 用户身份合法性鉴别
- 操作系统登录
访问控制
- 防止对资源的非法使用
- 限制访问主体对访问客体的访问权限
- DAC、MAC、RBAC
最小特权管理
- 限制、分割用户、进程对系统资源的访问权限
- “必不可少的”权限
信道保护
- 正常信道的保护
- 可信通路(Trusted Path)
- 安全键(SAK)
安全审计
- 对系统中有关安全的活动进行记录、检查以及审核
- 审计一般是一个独立的过程
内存存取保护
- 进程间/系统进程内存保护
- 段式保护、页式保护和段页式保护
文件系统保护
- 分区
- 文件共享
- 文件备份
WIndows 系统安全机制
理解Windows系统标识与鉴别、访问控制、用户账户控制、安全审计、文件系统的安全机制和安全策略
掌握Windows系统的安全配置方法
Windows系统标识与鉴别 — 安全主体
安全主体类型
- 用户账户
- 本地账户
- 域账户
- 组账户
- everyone组
- network组
- 计算机
- 服务
安全标识符(Security Identifier, SID)
安全主体的代表(标识用户、组和计算机账户的唯一编码)
范例:S—1—5—21—1736401710—1141508419—1540318053—1000
Windows用户身份鉴别
账号信息存储(SAM:安全账号管理)
运行期锁定、存储格式加密
仅对system帐号有权限,通过服务进行访问控制
Windows用户身份鉴别:本地登录
GINA (Graphical Identification and Authentication:图形 化识别和验证)
LSA (Local Security Authority:本地安全授权)
远程登录鉴别协议
SMB (Server Message Block) :口令明文传输
LM(LAN Manager):口令哈希传输,强度低
NTLM(NT LAN Manager):提高口令散列加密强度、挑战/响应机制
Kerberos:为分布网络提供单一身份验证
Windows系统访问控制 - ACL
访问控制列表(Access Control List,ACL)
NTFS文件系统支持
权限存储流文件系统中自主访问控制
灵活性高,安全性不高
用户账户控制(User Account Control ,UAC)
- 完全访问令牌
- 标准首先访问令牌
Windows 文件系统安全
NTFS文件系统权限控制(ACL)
- 文件、文件夹、注册表键值、打印机等对象
安全加密
- EFS(EFS(Encrypting File System)
- Windows内置,与文件系统高度集成
- 对windows用户透明
- 对称与非对称算法结合
- Bitlocker
- 对整个操作系统卷加密
- 解决设备物理丢失安全问题
Windows 系统审计机制
Windows日志
- 系统
- 应用程序
- 安全
- 设置
应用程序和服务日志
应用访问日志
- FTP访问日志
- IIS访问日志
Windows系统安全策略
账户策略
- 密码策略
- 账户锁定策略
本地策略
- 审核策略
- 用户权限分配
- 安全选项
Window安全配置 1 前置工作
- 安全的安装
- 分区设置:不要只使用一个分区
- 系统补丁:SP+Hotfix
- 补丁更新设置
- 检查更新
- 自动下载安装或手动
Windows安全配置 2 账户安全设置
账户安全设置
系统账户策略设置
账户安全选项设置
账户安全设置 - 保护账户安全
默认管理账户 administrator 更名
设备“好”的口令
- 自己容易记、别人不好猜
- 不安全口令示例:ZAQ!@ WSXzaq12wsx
- 安全口令实例:WDSrS1Y28r
账户安全设置 - 系统账户策略
密码策略:避免系统出现弱口令
密码必须符合复杂性要求
密码长度最小值
密码最短使用期限
密码最长使用期限
强制密码历史
用可还原的加密来存储密码
账户安全设置 - 账户锁定策略
账号锁定策略:应对口令暴力破解
账号锁定时间
账号锁定阀值
重置账号锁定计数器
账号权限控制 - 用户权限分配
- 用户权限分配
- 从网络访问这台计算机
- 拒绝从网络访问这台计算机
- 管理审核和安全日志
- 从远程系统强制关机
账户权限控制 - 设置唤醒密码
- 设置幻想计算机时的登录密码
- 设置屏幕保护恢复时的登录密码
Windows安全配置 - 自动播放功能的威胁
- 为方便用户而设计
- 恶意代码借助移动存储介质传播的方式
关闭自动播放功能 - 可以有效阻断U盘病毒的传播路径
Windows 全配置 4 - 远程访问控制
- 网络访问控制
- 确保启用Windows自带防火墙
- 共享安全防护
网络访问控制 - 防火墙设置
- 确保启用Windows自动防火墙
出站规则
入站规则
连接安全规则
监视
-防火墙
连接安全规则
-安全关联
共享安全防护—共享安全风险
IPC$的安全问题(空会话连接导致信息泄露)管理共享风险(远程文件操作)
普通共享的风险(远程文件操作)
共享安全防护—关闭管理共享
空会话连接控制
本地安全策略设置中对匿名访问的限制
关闭管理共享:修改注册表
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\LanmanServer\Parameters
Windows安全设置 5 本地安全策略
审核策略
用户权限分配
安全选项
本地安全策略 - 安全选项
管理工具→本地安全策略→安全设置→本地策略→安全选项
交互式登录:无须按Ctrl+Alt+Del,设置为已禁用
交互式登录:不显示最后的用户名,设置为已启用
设备:将CD—ROM的访问权限仅限于本地登录的用户,设置为已启用
Windows安全配置 6 - 服务运行安全
Windows服务(windows service)
Windows服务程序是一个长时间运行的可执行程序,不需要用户的交互,也不需要用户登录
服务运行安全设置 - 关闭不必要的服务
关闭不需要的服务
- 计划任务
- 远程操作注册表
控制服务权限
- System(本地系统)
- Local Service
- Network Service
Windows安全配置 7 第三方软件
- 防病毒软件
- 安全防护软件
Linux 安全
安全主体
- 用户:身份标识(User ID)
- 组:身份标识(Group ID)
用户与组基本概念
- 文件必须有所有者
- 用户必须属于某个或多个组
- 用户与组的关系灵活(一对多、多对多等都可以)
- 根用户拥有所有权限
信息存储
- 用户信息:
- /etc/passwd
- /etc/shadow
- 组信息
- /etc/group
- /etc/gshadow
用户信息文件 - passwd
- 用于存放用户信息(早期包括使用不可逆DES算法加密形成用户密码散列)
- 特点
- 文本格式
- 全局可读
- 存储条目格式
- 条目例子
用户账户影子文件 - shadow
- 用于存放用户密码散列、密码管理信息等
- 特点
- 文本格式
- 仅对 root 可读写可写
- 存储条目格式
- 条目例子
Linux系统身份鉴别
- 口令鉴别
- 本地登录
- 远程登录(telnet 、 FTP 等)
- 主机信任(基于证书)
- PAM(Pluggable Authentication Modules , 可插拔验证模块)
Linux 系统访问控制-权限模式
- 文件/目录权限基本概念
- 权限类型:读、写、执行
- 权限表示方式:模式位
Linux系统访问控制-权限模式
Linux系统安全审计-日志权限
系统日志类型
- 连接时间日志
- 由多个程序执行,记录用户登录时间
- 进程统计
- 由系统内核执行,为系统基本服务提供命令使用统计
- 错误日志
- 由syslogd守护记录,制定注意的事项
- 应用程序日志
- 应用程序如(HTTP、FTP)等创建的日志
Linux 文件系统
文件系统类型
- 日志文件系统:Ext4、Ext3、Ext2、ReiserFS、XFS、JFS等
文件系统安全
- 访问权限
- 文件系统加密
- eCryptfs (Enterprise Cryptographic Filesystem)
- 基于内核,安全性高,用户操作便利
- 加密元数据写在每个加密文件的头部,方便迁移,备份
文件系统目录结构
Linux系统的特权管理
特权划分
- 分割管理权限,30多种管理特权
- 根用户(root)拥有所有特权
- 普通用户特权操作实现
- setuid setgid
特权保护:保护root账号
- 不直接使用root登录,普通用户su成为root
- 控制root权限使用
Linux系统安全设置
1、安全配置前置工作
2、账号和口令安全
3、系统服务配置
4、远程登录安全
5、文件和目录安全
6、系统日志配置
7、使用安全软件
Linux设置 - 安全配置前置工作
系统安装
- 使用官方/正版软件
- 分区挂载重要目录
- 根目录 (/) 用户目录(/home) 临时目录(/tmp)等应分开道不同的磁盘分区
- 自定义安装,选择需要的软件包
- 不按照全部软件包,尤其是那些需要联网的服务包
系统补丁
- 及时安装系统补丁
- 更新补丁钱,要求在测试系统上对补丁进行可用性喝兼容性验证
账户和口令安全 - 账户通用配置
- 检查、清楚系统中多余账号
- 检查
- #cat/etc/passwd
- #cat/etc/shadow
- 清除多余账号
- 锁定账号
- 特殊保留的系统伪账户,可以设置锁定登录
- 锁定命令:#passwd -l <用户名>
- 解锁命令:#passwd -u <用户名>
- 检查
禁用root之外的超级用户
- 打开系统账号文件/etc/passwd
- 若用户ID=0,则表示该用户拥有超级用户的权限
- 检查是否有多个ID=0
- 禁用或删除多余的账号
检查是否存在空口令账号
- 执行命令
- #awk -F:‘(== “”) { print $1}’/etc/shadow
如果存在空口令账号,则对其进行锁定,或要求增加密码
要确认空口令账户是否和已有应用关联,增加密码是否会引起应用无法连接的问题
设置账户锁定登录失败锁定次数、锁定时间
修改账户超时值,设置自动注销时间
保护 root 账号
- root 账号权限高
- 保护措施
- 禁止使用 root 登录系统
- 只允许普通用户登录,然后通过 su 命令切换到 root
- 不要随意把 root shell 留在终端上
- 不要把当前目录(“./”)和普通用户的 bin 目录放在 root 账号的环境变量 PATH 中
- 永远不以 root 运行其他用户的或不熟悉的程序
账号和口令安全 - 口令安全策略
要求使用安全口令
- 口令长度、字符要求
口令修改策略
- 强制口令使用有效期
- 设置口令修改提醒
- 设置账户锁定登录失败锁定次数、锁定时间
Linux设置 - 系统服务配置
禁止危险的网络服务
- telnet、FTP
- echo、chargen、shell、finger、NFS、RPC等
关闭非必需的网络服务
- talk、ntalk等
确保最新版本
- 使用当前最新和最安全的版本的服务软件
Linux设置 - 远程登录安全
- 禁用telnet,使用SSH进行管理
- 限制能够登录本机的IP地址
- 禁止root用户远程登陆
- 限定信任主机
- 修改banner信息
远程登录安全 - 使用SSH/限制登录IP
禁用telnet,使用SSH进行管理
- 开启ssh服务:#service sshd start
限制能够登录本机的IP地址
- #vi/etc/ssh/sshd_config
- 添加(或修改):
AllowUsers xyz@192.168.1.23
- 允许用户xyz通过地址192.168.1.23来登录本机
AllowUsers @192.168..*
- 仅允许192.168.0.0/16网段所有用户通过ssh访问。
远程登录安全 - 静止 root /限定信任主机
远程登录安全 - 修改banner信息
Linux设置 - 文件和目录安全
- 设置文件目录权限
- 设置默认umask值
- 检查SUID/SGID文件
文件和目录安全 - 设置文件目录权限
保护重要的文件目录,限制用户访问
- 设置文件的属主和属性以进行保护
- 极其重要的文件或目录可以设置为不可改变属性
- chattr +i/etc/passwd
临时文件不应该有执行权限
文件和目录安全 - 设置默认umask值
设置新创建文件的默认权限掩码
- 可以根据要求设置新文件的默认访问权限,如仅允许文件属主访问,不允许其他人访问umask设置的是权限“补码”
设置方法
- 使用umask命令
- 如#umask 066
- 编辑/etc/profile文件,设置umask值
文件和目录安全 - 检查SUID/SGID文件
SUID/SGID的程序在运行时,将有效用户ID改变为该程序的所有者(组)ID。因而可能存在一定的安全隐患
找出系统中所有含s“位的程序,把不必要的”s“位去掉,或者把根本不用的直接删除,这样可以防止用户滥用及提升权限的可能性,其命令如下:
查找SUID可执行程序
find/-perm-4000-user 0-ls
查找SGID程序
find/-perm-2000-user 0-ls
Linux设置 - 系统日志
保护日志文件
审查日志中不正常情况
- 非常规时间登录
- 日志残缺
- Su的使用
- 服务的启动情况
Linux设置 - 使用安全软件
- 启用主机防火墙
- 使用最新版本安全软件
安全漏洞与数据库安全
安全漏洞的产生与发展
安全漏洞的基本概念
什么是漏洞(Vulnerability)
也被称为脆弱性,计算机系统天生的类似基因的缺陷,在使用和发展过程中产生意想不到的问题(冯·诺依曼)
漏洞的含义
漏洞本身随着信息技术的发展而具有不同的含义与范畴
基于访问控制的定义逐步发展到涉及系统安全流程、设计、实施、内部控制等全过程的定义
漏洞的定义
学者们对漏洞的定义
- 从访问控制角度定义(1982 Denning)
- 从风险管理角度的定义(1990 Longstaff)
- 使用状态空间描述的方法定义(1996 Bishop)
标准机构的定义
- 存在于评估对象(TOE)中违反安全功能要求的弱点(1999年,ISO/IEC15408(GB/T18336))
- 威胁源可以攻击或触发的信息系统、系统安全流程、内部控制或实施中的弱点(2000 NIST IR 7298)
- 威胁可以利用的一个或一组资产的弱点;是评估对象(TOE)中的弱点;是在信息系统或其环境的设计及实施中的缺陷、弱点或特性(2009年ISO/IEC)
漏洞的理解
从生命周期的角度出发,信息技术、信息产品和信息系统在需求、设计、实现、配置、维护和使用等过程中,有意或无意产生的缺陷,这些缺陷一旦被恶意主体所利用,就会造成对信息产品或系统的安全损害,从而影响构建于信息产品或系统之上正常服务的运行,危害信息产品或系统及信息的安全属性
漏洞产生的原因
技术原因
软件系统复杂性提高,质量难于控制,安全性降低
公用模块的使用引发了安全问题
经济原因
“柠檬市场”效应
环境原因
从传统的封闭、静态和可控变为开放、动态和难控
攻易守难
安全缺陷
安全性缺陷是信息系统或产品自身“与生俱来”的特征,是其的固有成分
漏洞的分类
分类的目的
准确的区分和描述不同的漏洞
有助于漏洞的发布、存储和查询
漏洞分类实例
NVD:代码注入等21种类型
CNNVD:根据漏洞形成分成22种类型
漏洞的发现
- 静态漏洞挖掘
- 动态漏洞挖掘
静态漏洞挖掘
在运行代码而直接对代码进行漏洞挖掘的方法
适用对象
- 完整的或不完整的源代码
- 二进制代码
- 中间代码片段
方法
- 流分析
- 符号执行
- 模型检测
动态漏洞挖掘
在代码运行的状态下,通过监测代码的运行状态或根据测试用例结果来挖掘漏洞的方法
特点
- 与静态分析方法相比,动态分析方法的最大优势在于其分析结果的精确,即误报率较低
方法
- 模糊测试
- 动态污染传播
安全漏洞的修复
安装补丁是漏洞消减的技术手段之一
- 数据显示、及时安装有效补丁可避免 95% 的信息安全损失
补丁修复中存在两难问题:
- 打什么样的补丁?——补丁质量问题
- 如何打补丁?——操作方式问题
- 什么时间打补丁?——修复时机问题
补丁分类
- 从文件类型
- 以源代码形式存在
- 以二进制形式存在
- 从内存角度
- 文件补丁(冷补丁)
- 内存补丁(热补丁)
补丁安装时应注意的问题
- 补丁安装部署之前需要经过必要的测试
- 需要从可靠来源不断获取最最新补丁信息
- 安装补丁时需要做好备份和相应的应急措施
安全漏洞的修复
Metasploit 平台
Metasploit简介
Metasploit是一款开源的安全漏洞检测工具,安全工作人员常用Metasploit工具来检测系统的安全性。Metasploit Framework (MSF)在2003年以开放源 码方式发布,是可以自由获取的开发框架。它是一个强大的开源平台,供开发测试和使用恶意代码,这个环境为渗透测试、shellcode 编写和漏洞研究提供了一个可靠平台。
目前的版本收集了数百个实用的溢出攻击程序及一些辅助工具,让人们使用简单的方法莞成安全漏滴检测,即便一个不懂安全的人也可以轻松的使用它。
BT5/Kali中启动Metasploit的命令:msfconsole 升级命令:msfupdate
Windows平台启动的脚本:安装目录下的console.bat
使用
实例 - MS02067
vsFTP smile face backdoor
提权实例 - CVE 2012 - 1823
数据库的安全
数据库:长期储存在计算机内的、有组织的、可共享的数据集合
DBMS (DataBase Management System):一种操纵和管理数据库的大型软 件,用于建立、使用和维护数据库,它对数据库进行统一的管理和控制,以保证数据库的安全性和完整性
数据系统关系
关系型数据库系统特点
数据结构化和共享性
- 库、表、字段
- 结构化查询语言(SQL)
数据独立性
- 物理独立性
- 逻辑独立性
数据的完整性约束
- 实体完整性(通过主键约束条件)
- 参照完整性(通过主外键约束条件)
- 用户自定义完整性(通过CHECK子句)
数据由DBMS统一管理和控制
- 查询引擎、事务控制、数据存储模块/组件
结构化查询语言 SQL
SQL语句格式
- 基本语句约30条。每句语句请求DBMS完成一个动作
结构化查询语言 SQL
数据酷安全
- 保密性
- 数据泄露
- 完整性
- 执行不争取的修改操作(插入、删除、更新等)
- 可用性
- 数据库死锁,性能下降或无法访问
数据库安全需求
- 物理数据库完整性
- 逻辑数据库完整性
- 数据单元安全性
- 可审计
- 访问控制
数据库安全措施
- 用户标识与鉴别
- 授权与访问控制
- 数据加密
- 安全审计
用户标识与鉴别
用户鉴别
- 操作系统
- 数据库
- 第三方
用户管理策略
- 默认账号管理
- 账户锁定策略
数据库安全措施 - 访问控制
设置用户对不同的数据对象允许的操作权限
- 系统权限(数据库实例级或数据库级)
- 模式权限(数据库对象:表、视图等)
- 数据对象权限(数据对象:记录级)
数据库安全措施 - 数据加密
数据加密方式
- 传输加密
- 存储加密
数据存储加密层级
- OS层加密
- DBMS内核层加密
- DBMS外层加密
数据库安全措施 - 安全审计
数据库审计日志
数据库审计(也称标准审计)
- 用户级审计:安全审计员设置,用户行为审计
- 系统级审计:管理员设置,用户授权或系统级权限操作审计
细粒度审计
- 监视对数据对象的操作
数据库完整性 - 完整性约束
数据库完整性保证:完整性约束
完整性约束条件
- 实体完整性(PRIMARY KEY定义,唯一、不为空)
- 域完整性(表定义中的CHECK、FOREIGN KEY约束、DEFAULT、NOT NULL定 义)
- 参照完整性(FOREIGN KEY定义,关联)
- 用户定义完整性(生成时定义,非空、唯一、布尔)
完整性检查
违约处理机制
数据备份与恢复
备份:数据冗余技术
- 数据转储
- 日志文件
恢复:从冗余数据中实施数据库恢复
- 事务故障的恢复(事务处理)
- 系统故障的恢复(事务处理)
- 介质故障的恢复(通过转储数据恢复)
数据库面临安全威胁
过度的特权滥用
合法的特权滥用
特权提升
平台及数据库漏洞
SQL注入
不健全的审计
拒绝服务攻击
数据库通信协议漏洞
不健全的认证
数据泄露
数据库安全防护
- 层层设防:防护体系建设
- 检查、监控和审计
- 事前检测:安全特性检测
安全特性检查
安全配置
- 补丁
- 协议(端口、传输协议)
账号
- 用户名及密码
- 口令策略
- 权限
存储过程
触发器
备份
数据库安全特性检查
数据库安全防护
- 事务中运行监控:数据库云更新安全监控
- 事后审计
- 审计对象(对谁进行审计)
- 标准审计(系统级、用户级)
- 细粒度审计(对象级)
- 审计内容(对什么行为进行审计)
- 访问数据库应用程序、位置及用户信息,包括用户操作、操作日期与时间、操作涉及的相关数据、操作是否成功等
恶意代码防范
恶意代码发展史
1949:冯·诺依曼在《复杂自动机组织论》提出概念
1960:生命游戏(约翰·康维)磁芯大战(道格拉斯.麦耀莱、维特.维索斯基、罗伯.莫里斯)
1973:真正的恶意代码在实验室产生
1981年-1982年:在APPLE-II的计算机游戏中发现Elk cloner
1986年-第一个PC病毒:Brain virus
1988年-Morris Internet worm-6000多台
1990年-第一个多态病毒(躲避病毒查杀)
1991年-virus construction set-病毒生产机
1994年-Good Times(joys)
1995年一首次发现macro virus
1996年-netcat的UNIX版发布(nc)
1998年-第一个Java virus(StrangeBrew)
1986年-第一个PC病毒:Brain virus
1988年-Morris Internet worm-6000多台
1990年—第一个多态病毒(躲避病毒查杀)
1991年-virus construction set-病毒生产机
1994年-Good Times(joys)
1995年一首次发现macro virus
1996年-netcat的UNIX版发布(nc)
1998年-第一个Java virus(StrangeBrew)
1998年-netcat的Windows版发布(nc)
1998年-back orifice(BO)/CIH
1999年-melissa/worm(macrovirus by email)
1999年-back orifice(BO) for WIN2k
1999年-DOS/DDOS-Denial of Service TFT/trin00
1999年-knark内核级rootkit(linux)
2000年-love Bug(VBScript)
2001年-Code Red-worm(overflow for IIS)
2001年-Nimda-worm(IIS/ outlook/file share etc.)
2002年-setiri后门
2002年-SQL slammer(sqlserver)
2003年-hydan的steganography工具
2003年-MSBlaster/Nachi
2004年-MyDoom/Sasser
2006年-熊猫烧香
2010年-Stuxnet(工业蠕虫)
2012年-火焰病毒
恶意代码的发展趋势
从传播速度上来看
- 恶意代码爆发和传播速度越来越快
从攻击意图来看
- 从游戏、炫耀逐步转向恶意牟利
从功能上来看
- 恶意代码的分工越来越细
从实现技术来看
- 恶意代码实现的关键技术不断变化
从传播范围来看
- 恶意代码呈现多平台传播的特征
恶意代码的传播方式
- 移动存储
- 自动播放功能
- winodws默认
- 自动执行 autorun.inf
- 设置
- 组策略编辑器
- 自动播放功能
- 文件传播
- 网络传播
- 网页
- 电子邮件
- 即时通讯
- 共享
- 主动放置
- 软件漏洞
恶意代码的加载方式
随系统启动而加载
- 开始菜单中的启动项
- 启动配置文件
- 注册表启动项
- 系统服务
- 组策略
随文件执行加载
- 感染/文件捆绑
- 浏览器插件
- 修改文件关联
其他
随系统启动加载方式 - 启动配置
随系统启动加载方式 - 注册表
随系统启动加载方式 - 服务
随系统启动加载方式 - 组策略
随文件执行加载方式 - 感染/文件合并
随文件执行加载方式 - 浏览器插件
随文件执行加载方式 - 修改文件关联
恶意代码生成技术
进程保护
- 进程守护
- 超级权限
检测对抗
- 反动态调试
- 反静态调试
恶意代码进程保护 - 进程守护
恶意代码主程序
- 实现恶意代码主功能
守护程序
- 监视并保护主进程正常运行
- 阻止主程序的退出
- 重启主程序
- 从备份中还原主程序
- 从网络中重新下载主程序
恶意代码进程保护 - 设备驱动程序
为什么是设备驱动程序?
恶意代码通过将自身注册成为设备驱动,从而获得较高权限,阻止反病毒软件对它的查杀并干扰反恶意代码软件的正常运行
特点
非常高的权限
安全模式下可工作
无法直接查杀
检测对抗技术 - 反动态调试
动态调试的发现
- 伪断点
- 校验和,发现调试
- 检测运行环境,发现调试工具
反动态调试的实现
- 封锁键盘输入和屏幕显示
- 中止调试软件
- 恶意代码程序自动退出
检测对抗技术 - 反静态调试
反静态调试的实现
加壳:对恶意代码的可执行二进制程序进行压缩,使其执行流程发生变化
加密:随着加密密钥的变化,恶意代码会产生不同的表现形式,进一步提高了其抗静态分析的能力
代码混淆:通过插入伪指令、混淆程序数据和控制流等方法,防止静态分析和检测
恶意代码隐蔽技术
隐藏通常包括本地隐藏和通信隐藏
- 其中本地隐藏主要有文件隐藏、进程隐藏、网络连接隐藏、内核模块隐藏、编译器隐藏等
- 通信隐藏主要包括通信内容隐藏和传输通道隐藏。
RootKit技术
- 本地隐藏,就是rookit技术
- 恶意代码的隐藏或多或少都与RootKit技术相关
恶意代码隐蔽技术 - 本地隐蔽技术
本地隐蔽是指为了防止本地系统管理人员觉察而采取的隐蔽手段本地系统管理人员通常使用“查看进程列表“查看目录”“查着内核模块”查着系统网络连接状态”等管理命令莱检测系统是否被植入了恶意代码。
- 进程隐蔽
- 网络隐蔽
- 系统隐蔽
恶意代码隐藏技术
进程隐藏
- 进程迷惑
- DLL注入
网络隐藏
- 端口复用
- 无端口
- 反向端口
系统隐藏
- 隐藏、系统文件
- 流文件隐藏
- Hook技术
恶意代码进程影藏技术 - 进程迷惑
进程隐藏 - Hidetool
通过 DLL 注入
端口复用/无端口
反弹端口
系统隐藏
流文件
NTFS 数据流后门
- 利用NTFS文件系统特性,将木马隐藏在正常文件当中,普通手段无法察觉:
- type calc.exe >c:\note.txt:stream.exe
- 启动木马的命令:
- start c:\note.txt:stream.exe
恶意代码系统隐藏技术 - hook技术
恶意代码查杀案例
恶意代码分析工具介绍
- Filemon
- Regmon
- PelD
- W32Dasm及Ollydbg
- 冰刃或Xuetr
- Windows清理助手
- 木马杀手
- 各种专杀工具
案例
web应用安全与攻防技术
Web 安全基础
Web工作机制 - 描述
1、用户使用通用的Web浏览器,通过接入网络(网站的接入则是互联网)连接到Web服务器上。用户发出请求,服务器根据请求的URL的地址连接,找到对应的网页文件,发送给用户,两者对话的“官方语言”是Http。网页文件是用文本描述的,HTML/Xml格式,在用户浏览器中有个解释器,把这些文本描述的页面恢复成图文并茂、有声有影的可视页面。
2、通常情况下,用户要访问的页面都存在Web服务器的某个固定目录下,是一些.html或.xml文件,用户通过页面上的“超链接”(即URL地址)可以在网站页面之间“跳跃”,这就是静态的网页。
后来人们觉得这种方式只能单向地给用户展示信息,信息发布还可以,但让用户做一些比如身份认证、投票选举之类的事情就比较麻烦,由此产生了动态网页的概念;所谓动态就是利用flash、Php、asp、Java等技术在网页中嵌入一些可运行的“小程序”,用户浏览器在解释页面时,看到这些小程序就启动运行它。
小程序的用法很灵活,可以展示一段动画(如Flash),也可以在你的PC上生成一个文件,或者接收你输入的一段信息,这样就可以根据你的“想法”,对页面进行定制处理。
3、“小程序”的使用让Web服务模式有了“双向交流”的能力,Web服务模式也可以象传统软件一样进行各种事务处理,如编辑文件、利息计算、提交表格等
这些“小程序”可以嵌入在页面中,也可以以文件的形式单独存放在Web服务器的目录里,如.asp、.php、jsp文件等,并且可以在开发时指定是在用户端运行,还是在服务器端运行;
这样功能性的小程序越来越多,形成常用的工具包,单独管理, Web业务开发时,直接使用就可以了,这就是中间件服务器,它实际上是Web服务器处理能力的扩展。
4、静态网页与“小程序”都是事前设计好的,一般不经常改动,但网站上很多内容需要经常的更新,如新闻、博客文章、互动游戏等,这些变动的数据放在静态的程序中显然不适合,传统的办法是数据与程序分离,采用专业的数据库。
Web开发者在Web服务器后边增加了一个数据库服务器,这些经常变化的数据存进数据库,可以随时更新。当用户请求页面时,“小程序”根据用户要求的页面,涉及到动态数据的地方,利用SQL数据库语言,从数据中读取最新的数据,生成“完整”页面,最后送给用户,如股市行情曲线,就是由一个不断刷新的小程序控制。
5、除了应用数据需要变化,用户的一些状态信息、属性信息也需要临时记录而Web服务器本来是不记录这些信息的,只管答复你的要求,后来Web技术为了“友好”互动,需要“记住”用户的访问信息,建立了一些“新”的通讯机制:Cookie:把一些用户的参数,如帐户名、口令等信息存放在客户端的硬盘临时文件中,用户再次访问这个网站时,参数也一同送给服务器,服务器就能识别身份。
Session:把用户的一些参数信息存在服务器的内存中,或写在服务器的硬盘文件中,用户是不可见的,Cookie与Session可以结合使用。
6、 Cookie在用户端,一般采用加密方式存放就可以了;Session在,服务器端,信息集中,被篡改问题将很严重,所以一般放在内存里管理,尽量不存放在硬盘上。
Http 协议
HTTP(超文本传输协议):
它于1990年提出,当前版本为HTTP/1.1
HTTP设计用来将超文本标记语言(HTML)文档从Web 服务器传送到Web浏览器
HTTP是一个请求和回应协议:客户机发送请求,服务器对请求给出回应
HTTP 使用可靠的TCP连接,默认TCP端口是80
HTTP协议特点
1.支持客户/服务器模式
2.简单快速:客户向服务器请求服务时,只需传送请求方法和路径。
3.灵活:HTTP允许传输任意类型的数据对象。正在传输的类型由Content—Type加以标记
4.无连接:无连接的含义是限制每次连接只处理一个请求。服务器处理完客户的请求,并收到客户的应答后,即断开连接。采用这种方式可以节省传输时间。
5.HTTP协议是无状态协议。无状态是指协议对于事务处理没有记忆能力。缺少状态意味着如果后续处理需要前面的信息,则它必须重传,这样可能导致每次连接传送的数据量增大。另一方面,在服务器不需要先前信息时它的应答就较快。
HTTP 协议结构
HTTP的一个会话,由Request和response组成
HTTP请求(Requests)由请求行、消息报头、请求正文三个部分组成
- 请求行:方法, URL,协议/版本(Method—URI—Protocol/Version)
- 消息报头(Request headers)
- 请求正文(Entity body)
HTTP响应(Responses)也包含三个部分:状态行、消息报头、响应正文
- 状态行:协议状态代码描叙(Protocol-Status code-Description)
- 消息报头(Response headers)
- 响应正文(Entity body)
HTTP请求方法
- HTTP请求方法规定了客户与服务器联系的类型不同
- HTTP 1.1支持7种请求方法:
- GET, POST, HEAD,OPTIONS,PUT, DELETE,和TRACE
- GET和POST在INTERNET的应用程序中是使用最普遍的两个方法。
- GET:把所有请求的数据都放在URL当中,从URL中可以直接看到,但最大,最大传输的信息量是2 KB
- POST:把请求的数据放在请求的数据体中,在URI中不可见,长度不受限,常用于提交表单
HTTP请求URL
HTTP URL(URL是一种特殊类型的URI,包含了用于查找某个资源的足够的信息)的格式如下:
http://host[":"port][abs_path]
http表示要通过HTTP协议来定位网络资源;host表示合法的Internet主机域名或者IP地址;port指定一个端口号,为空则使用缺省端口80;abs_path指定请求资源的URI;如果URL中没有给出abs_path,那么当它作为请求URI时,必须以“/”的形式给出,通常这个工作浏览器自动帮我们完成
HTTP 请求范例
HTTP协议缺陷
HTTP协议分析工具
-
webscarab
-
burpsuite
Cookie 和 Section
Cookie机制
HTTP协议本身是无状态协议,HTTP不会记录前一次传输的数据信息,因此无法实现务器和客户端的交互。
而很多情况下,我们和服务器之间的一个会话不是一个动作就完成了,所以我们希望能在客户端和服务器这个交互的会话期间内,服务器能够保持对客户端会话的识别,也就是保持http的状态性
Cookie技术
Cookie,有时也用其复数形式Cookies,指某些网站为了辨别用户身份、进行session跟踪而储存在用户本地终端上的数据(通常经过加密)
Cookie的动机:客户端在浏览多个页面时,提供事物(transaction)的功能,为服务器提供状态管理
购物车可以为每个用户实现购物统计
实现授权策略,用户不用每个页面都输入用户名/密码
每个cookie都有一定的URL范围,客户请求这个范围的URL,都要提供这个cookie
Cookie的规范
Cookie由服务器端向客户端写入,包含在http响应头中的setcookie字段,格式如下:
Set-cookie name |value | path |domain |expires
Set-Cookie:nolife=fromdomain%3Dwww;path=/;domain=.51job.com
Cookiename:cookie变量的名称
Value:赋予cookie的值
Path:请求页面的路径
Domain:cookie的作用范围(域名)
Expires:过期时间
Cookie会被写入到客户端的internet temporary files文件夹内,当客户端请求域 名范围内的URL时,会读取cookie文件,并在http请求头中的cookie字段
Cookie的安全
Cookie一般由服务器向客户端写入,可以包含个性化信息,有时候也会被web站点设计包含站点的认证信息。
Cookie分为永久性cookie和会话cookie。永久性cookie保存在客户端 的硬盘中,会话cookie在会话结束后,失效。
脚本语言,可以盗取cookie,当cookie中包含用户的敏感信息时,因此攻击者可以利用XSS技术,盗取cookie信息,这样会造成用户信息泄露,甚至重放攻击
Session机制
Session机制,相对于cookie机制,就是将会话信息存储于服务器端,而非客户端,并且存储于服务器端内存中,会话结束而失效
Session机制的实现,是在服务器端保存状态。相比客户端cookie存储,安全性更高
Web 主流安全风险
注入攻击
定义:
注入攻击发生在当不可信的数据作为命令或者查询语句的一部分,被发送给解释器的时候。攻击者发送的恶意数据可以欺骗解释器,以执行计划外的命令或者访问未被授权的数据。
注入漏洞通常能在SQL、LDAP、XPath或是NoSQL查询语句、OS命令、 XML解析器、SMTP包头、表达式语句及ORM查询语句中找到
常见类型有:SQL注入、OS命令注入、XML注入、LDAP注入
SQL注入
当应用程序将用户输入的内容,拼接到SQL语句中,一起提交给数据库执行时,就会产生SQL注入威胁。
由于用户的输入,也是SQL语句的一部分,所以攻击者可以利用这部分可以控制的内容,注入自己定义的语句,改变SQL语句执行逻辑,让数据库执行任意自己需要的指令。通过控制部分SQL语句,攻击者可以查询数据库中任何自己需要的数据,利用数据库的一些特性,可以直接获取数据库服务器的系统权限。
SQL注入防御
SQL注入防御:
- 防止注入漏洞需要将数据与命令语句、查询语句分隔开来。
- 最佳选择是使用安全的API,完全避免使用解释器,或提供参数化界面的接口,或迁移到ORM或实体框架。
其他思路:
- 检测参数
- 敏感信息加密
- 低权限账户连接数据库
注入攻击 - OS命令注入
概述
Command Injection,即命令注入攻击,是指这样一种攻击手段,黑客通过把HTML代码输入一个输入机制(例如缺乏有效验证限制的表格域)来改变网页的动态生成的内容。一个恶意黑客(也被称为破裂者cracker)可以利用这种攻击方法来非法获取数据或者网络资源。
注入 - 命令注入
预防
对于命令注入最主要的办法还是对表单输入或者选择的内容进行验证
XSS 攻击
概述
XSS攻击:跨站脚本攻击(Cross Site Scripting),为不和层叠 样式表(Cascading Style Sheets,CSS)的缩写混淆。故将跨 站脚本攻击缩写为XSS。
XSS (cross site scripting)跨站脚本,是一种迫使Web站 点回显可执行代码的攻击技术,而这些可执行代码由攻击者提供、最终为用户浏览器加载。不同于大多数攻击(一般只涉及攻击者和受害者),XSS涉及到三方,即攻击者、客户端与网站。
这种类型的漏洞由于被骇客用来编写危害性更大的phishing攻击而变得广为人知。
跨站脚本攻击是到目前为止最受关注的、威胁最高的攻击手段
通过XSS攻击,攻击者可以窃取网页访问者保存在终端的各种帐号信息,并且可以通过脚本盗取用户的cookie,劫持用户写web服务器的会话
反射型XSS
它通过给别人发送带有恶意脚本代码参数的URL,当URL地址被打开时,特有的恶意代码参数被HTML解析、执行。它的特点是非持久化,必须用户点击带有特定参数的链接才能引起
存储式XSS
所谓存储跨站攻击是指用户提交给Web应用程序的数据首先就被永久的保存在服务器的数据库,文件系统或其他地方,后面且未做任何编码就能显示到Web页面,当其它用户浏览该链接时就会造成XSS攻击。最典型的就是2005年在MySpace发现的XSS漏洞以及利用该漏洞的Samy MySpace Worm
XSS攻击给web带来的威胁
Xss攻击给web带来的威胁,主要体现在黑客所注入的脚本。这些脚本主要实现的目的有:
盗取用户的cookie,劫持会话
获取用户敏感信息
将访问重定向,重定向到钓鱼网站
XSS防御
1、对所有用户提交内容进行可靠的输入验证,进行编码替代。例如:<=&lt,>&gt
包括对URL、查询关键字、HTTP头、POST数据等,仅接受指定长度范围内、采用适当格式、采用所预期的字符的内容提交
2、确认接收的的内容被妥善的规范化,仅包含最小的、安全的Tag(没有javascipt),去掉任何对远程内容的引用(尤其是样式表和javascipt),使用HTTP only的cookie
3、部署XSS攻击防御产品
认证会话管理
身份认证:
最常见的是登录功能,往往是提交用户名和密码,在安全性要求更高的情况下,有防止密码暴力破解的验证码,基于客户端的证书,物理口令卡等等。
会话管理:
HTTP本身是无状态的,利用会话管理机制来实现连接识别。身份认证的结果往往是获得一个令牌,通常放在cookie中,之后对用户身份的识别根据这个授权的令牌进行识别,而不需要每次都要登陆。
常见身份认证漏洞与影响
漏洞
弱密码
配置文件中使用明文凭据
通过网络传递明文凭据
账户的特权过强
混用个性化数据的身份验个性化数据适于永久的cookie,而身份验证
影响
增加了破解密码和词典攻击的风险
可访问服务器的内部人员都能直接访问凭据
攻击者可通过监控网络来盗取身份验证凭据并窃取身份
与进程和账户泄漏相关的风险增加证数据cookie不应是永久的
HTTP 会话管理认证
超文本传输协议(HTTP)是无状态:一个客户端计算机上运行Web浏览器必须建立一个新的传输控制协议(TCP)的网络连接到每一个新的Web服务器的HTTP GET或POST请求。Web服务器,因此,不能依赖于建立的TCP比单个HTTP GET或POST较长的运作网络连接。
会话管理是由Web开发人员用来进行HTTP协议无状态会话状态支持的技术。例如,一旦用户验证自己的Web服务器,她的下一个HTTP请求
(GET或POST)不应导致Web服务器重新认证。
在“存储”的会话ID和相关的会话数据(用户名,账号等,在Web服务器上)目前使用了多种技术,包括但不限于:本地存储和数据库等。
会话重放攻击
2、重放攻击与cookie
我们监听http数据传输的截获的敏感数据大多数就是存放在cookie中的数据。其实在web安全中的通过其他方式(非网络监听)盗取cookie与提交cookie也是一种重放攻击。我们有时候可以轻松的复制别人的cookie直接获得相应的权限
防御
CSRF
1、定义
跨站请求伪造(cross-site request forgery)通常缩写为CSRF,直 译为跨站请求伪造
即攻击者通过调用第三方网站的恶意脚本或者利用程序来伪造请求,当然并不需要向用户端伪装任何具有欺骗的内容,在用户不知情时攻击者直接利用用户的浏览器向攻击的应用程序提交一个已经预测好请求参数的操作数据包,利用的实质是劫持用户的会话状态,强行提交攻击者构造的具有“操作行为”的数据包
CSRF 攻击关键
CSRF的漏洞成因
CSRF最关键的是劫持用户的会话状态,所以说,导致CSRF漏洞的主要原因是会话状态的保持没有唯一时间特征的标识,即是说在使用HTTPCookie传送会话令牌的过程中,应该更谨慎的判断当前用户,而不是简单的通过操作数据包的Cookie值来鉴别,简单的说是每次数据交互时,对提交的数据包实行唯一性标识。
原理
CSRF 举例
CSRF 的检测
CSRF预防方案
访问控制权限错误
访问控制权限错误,意指一个已经授权的用户,通过更改访问时的一个参数,从而访问到了原本其并没有得到授权的对象。
常见表现形式:水平权限、垂直权限
水平权限访问控制错误
防御
访问控制错误防御
预防
1.用户权限与身份严格管理,任何动作执行都需要检验身份。
2.检查访问。任何来自不可信源的直接对象引用都必须通过访问控制检测,确保该用户对请求的对象有访问权限。
敏感信息泄露
敏感信息泄露概述
敏感数据和这些数据的备份,包括静态数据、传输中的数据甚至是客户浏览器中的数据往往存在被泄露的可能
攻击者通常不直接攻击加密系统。他们往往通过诸如窃取密钥、发起中间人攻击或从服务器窃取明文数据等方式对传输中的或者客户浏览器中的数据进行破解。
敏感信息泄露表现形式
在这个领域最常见的漏洞是应该加密的数据不进行加密。
在使用加密的情况下,常见的问题是不安全的密钥生成和管理和使用弱算法是很普遍的,特别是使用弱的哈希算法来保护密码。
浏览器的漏洞也很普遍,且可以很轻易的检测到,但是很难大规模的利用。
敏感数据防护检查
对于敏感数据,应当确保:
1.当这些数据被长期存储的时候,无论存储在哪里,它们是否都被加密,特别是对这些数据的备份?
2.无论内部数据还是外部数据,传输时是否是明文传输?在互联网中传输明文数据是非常危险的。
3.是否还在使用任何旧的或脆弱的加密算法?
4.加密密钥的生成是否是脆弱的,或者缺少恰当的密钥管理或缺少密钥回转?
5.当浏览器接收或发送敏感数据时,是否有浏览器安全指令或头文件丢失?
案例
敏感信息泄露的预防
1.预测一些威胁,加密这些数据的存储以确保免受这些威胁。
2.对于没必要存放的、重要的敏感数据,应当尽快清除。
3.确保使用了合适的强大的标准算法和强大的密匙,并且密匙管理到位
4.确保使用密码专用算法存储密码,如:bcrypt、PBKDF2或者scrypt。
已知漏洞的组件应用
概述
一些含有漏洞的组件(如:框架库)可以被自动化工具发现和利用。攻击者通过扫扫描或手动分析识别问题组件,然后根据需要定制攻击代码并实施攻击。
大多数的应用都存在这些问题。因为大多数的开发团队并不会把及时更新组件/库作为他们的工作重心。
在很多情况下,开发者都不了解他们所使用的全部组件,更不用说组件的版本了。组件的依赖性使情况更加糟糕。
组件漏洞案例
使用含有已知漏洞的组件预防
使用最新版本的组件
软件项目应该有如下的流程:
1.标识您正在使用的所有组件及其版本,包括所有的组件(比如版本插件)。
2.在公共数据库(漏洞库),项目邮件列表和安全邮件列表中时刻关注这些组件的安全信息并保证它们是最新的。
3.建立组件使用的安全策略,比如需要某些软件开发实践,通过安全性测试和可接受的授权许可。
4.在适当的情况下,考虑增加对组件的安全封装,去掉不使用的功能和/或安全薄弱的或者组件易受攻击的方面。
信息收集
信息收集 - 入侵的第一步
为什么要收集信息
获取攻击目标大概信息
为下一步攻击做准备
利用收集的信息直接攻击
信息收集和分析案例
信息收集的概念
- 情报学中一个领域
传统的信息收集
- 案例:著名的照片泄密案
互联网时代的信息收集
- 信息技术的发展使得数据大量被生产出来
- 案例:明星的家庭住址
收集哪些信息
目标系统的信息系统相关资料
域名、网络拓扑、操作系统、应用软件相关脆弱性
目标系统的组织相关资料组织架构及关联组织 地理位置细节
电话号码、邮件等联系方式近期重大事件 -员工简历
其他可能令攻击者感兴趣的任何信息
公开信息收集 - 搜索引擎
快速定位
- Google搜索“5sf67.jsp”可以找到存在此脚本的Web网站
- Google 搜索“teweb/default.htm”就可找到开放着远程Web连接的服务器
信息挖掘
定点采集
- 搜索“.doc+website”挖掘信息
隐藏信息
- .mdb、.ini、.txt、.old、.bak、.001…
后台入口
信息收集
漏洞利用
利用人性懒惰 - 密码破解
密码破解方法
- 暴力猜解
密码破解工具
- 密码暴力破解工具
- 密码字典生成工具
密码破解防御
- 密码生成技巧
- 密码管理策略
暴力猜解方法一 :散列值破解
暴力猜解方法二:远程密码破解
密码破解安全防御
设置“好”的密码
- 自己容易记,别人不好猜
系统及应用安全策略
- 账户锁定策略
- 随机验证码
其他密码管理策略
- 密码专用/分级,不同应用/系统/网站不同密码
- 专用密码管理工具
- A、B角
社会工程学
社会安全学防御
利用系统缺陷 - 拒绝服务攻击
利用系统开发缺陷 - 缓存溢出
后门设置与防范
后门设置的方法
后门可以作什么
- 方便下次直接进入
- 监视用户所有行为、隐私
- 完全控制用户主机
后门设置的类型
账号后门
- 现有管理员账号密码/新建账号/升级现有账号权限
- 普通账号shell设置Setuid
漏洞后门
- 木马(rootkit)
- 脚本后门
后门的清除和防范
痕迹的清理
这篇关于NISP 二级知识点总结——信息安全技术的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!