【windows安全性之访问控制】访问控制详细解说
windows的安全性的两个基本⽀柱是⾝份验证(登⼊)和授权(访问控制)。
⾝份验证是标识⽤户的过程,授权在验证了所标识⽤户是否可以访问特定资源之后进⾏。
相关的命名空间和类:
System.Security Namespace
System.Security.Principal Namespace
WindowsIdentity Class
System.Security.AccessControl Namespac
FileSystemSecurity Class
DirectorySecurity Class
FileSecurity
AccessRule Class
FileSystemAccessRule Class
AccessControlType Enum
FileSystemRights Enum
⽬录
1、访问控制模型(Access Control Model)
1.1访问控制模型的各个部分
1.2线程与安全对象之间的交互
1.3DACL 和 AES
1.4AccessCheck 的⼯作原理
2、访问控制编辑器(Access Control Editor)
1.1访问控制模型的各个部分
访问控制模型由两个基本部分:
1. 访问令牌(Access Token)
其中包含有关登录⽤户的信息(User SID,Group SIDS,特权列表privileges),访问令牌是与Windows的
账户相互对相应的,当某⼀账户登录时,系统会⽣成此⽤户的访问令牌并分发给启动的进程
2. 安全描述符(Security descriptor)
描述⼀个安全对象的安全信息,如什么样的⽤户的什么访问请求可以被允许,什么样的⽤户或者组的什么访问要被拒绝。安全描述符具体由ACL、对象拥有者SID 、此拥有者所在主的SID、安全描述符意思相符的控制位集合⼀起组成。ACL由⾃由访问控制列表 (DACL) 和系统访问控制列表 (SACL)组成。
访问控制的⼯作原理:
简述:⽤户经过⾝份认证成为安全主体》安全主体获取访问令牌》安全主体持有访问令牌操作安全对象》操作系统⽐对安全主体持有的访问令牌与安全对象的安全描述符是否匹配》如匹配允许操作(删除、移动、添加等13项操作),不匹配拒绝操作。
具体:⽤户登录时,系统会对⽤户的帐户名和密码进⾏⾝份验证,如果登录成功,我们就把该⽤户称为,LSA(Local Security Authority)将创建访问令牌 ,安全主体将获取此令牌(access token)。
安全主体持有访问令牌,安全主体访问安全对象时候,操作系统将检查安全主体的访问令牌内容和安全对象的安全描述是否匹配。如果匹配操作系统将允许安全主体对安全对象进⾏相应的操作。
相关知识点:访问令牌的组成、安全描述符、安全标识符(SID)、计算机上本地安全机构(LSA)、权限列表
安全描述符标识对象的所有者,还可以包含以下:
DACL ) 访问控制列表,⽤于标识允许或拒绝访问对象的⽤户和组
SACL 访问控制) ,⽤于尝试访问对象
ACL 包含 AES (访问控制) 。每个 ACE 指定⼀组,并包含⼀个 SID,⽤于标识允许、拒绝或审核其权限的受信者。受信者可以是⽤户帐户、组帐户或。
使⽤函数操作安全描述符、SID 和 ACL 的内容,⽽不是直接访问它们。这有助于确保这些结构在语法上保持准确,并防⽌将来对安全系统的增强功能破坏现有代码。
以下主题提供有关访问控制模型的各个部分的信息:
1.2线程与安全对象之间的交互
当线程尝试使⽤安全对象,系统会先执⾏访问检查,然后再允许线程继续。在访问检查中,系统将线程的访问令牌中的安全信息与对象的安全描述符中的安全信息。
访问令牌包含 (关联的) ID 的安全标识符。
安全描述符标识对象的所有者,并包含 DACL (的) 。 DACL (访问控制) ,其中每个条⽬都指定允许或拒绝特定⽤户或组的访问权限。
系统检查对象的 DACL,从线程的访问令牌中查应⽤于⽤户和组 SID 的 AES。系统会检查每个 ACE,直到授予或拒绝访问,或者直到没有要检查的 ACE。可以想象 (访问控制) 可能有⼏个适⽤于令牌的 SID 的 AES。如果发⽣这种情况,则每个 ACE 授予的访问权限都会累积。例如,如果⼀个 ACE 授予对组的读取访问权限,⽽另⼀个 ACE 授予对作为该组成员的⽤户的写⼊访问权限,则⽤户可以同时拥有对对象的读取和写⼊访问权限。
下图显⽰了这些安全信息块之间的关系:
1.3Dacl 和 Ace
如果 Windows 对象没有 (DACL) 的,则系统允许每个⼈对其进⾏完全访问。如果对象具有 DACL,系统只允许 (Ace) 的显式允许的访问。如果 DACL 中没有 Ace,则系统不允许任何⼈访问。同样,如果 DACL 包含允许访问有限的⼀组⽤户或组的 Ace,则系统将隐式拒绝对 Ace 中未包含的所有受信者的访问。
在⼤多数情况下,你可以通过使⽤允许访问的 Ace 来控制对对象的访问。不需要显式拒绝对对象的访问。例外情况是,ACE 允许访问组,⽽你希望拒绝对组成员的访问。为此,请在组的访问允许的 ACE 前⾯的 DACL 中放置⽤户的 "拒绝访问" ACE。请注意,⾮常重要,因为系统会按顺序读取 ace,直到授予或拒绝访问权限。⽤户的 "拒绝访问" ACE 必须⾸先出现;否则,当系统读取组的 "允许的访问" ACE 时,它将向受限⽤户授予访问权限。
下图显⽰了拒绝访问⼀个⽤户并授予对两个组的访问权限的 DACL。组 A 的成员可以通过累积允许对每个⽤户进⾏分组和权限的权限来获取读取、写⼊和执⾏访问权限。例外情况是 Andrew 的,拒绝访问的 ACE (尽管是 Everyone 组的成员)拒绝了访问。
1.4AccessCheck 的⼯作原理
当线程尝试访问安全对象时,系统将授予或拒绝访问。如果该对象没有 DACL (⾃由则系统会授予访问权限;否则, DACL 中查 (AES) 应⽤于线程的访问控制条⽬。对象的DACL 中的每个 ACE 都指定受信者(可以是⽤户帐户、组帐户或登录会话)允许或拒绝。
2、window 访问控制编辑器()
右键(⽂件、⽬录、程序)》选择属性》安全》⾼级进⼊访问控制编辑器
2.1权限属性页
术语表
安全描述符(Security Descriptors)
MSDN说安全描述符包含了描述⼀个安对象的安全信息。如什么样的⽤户的什么访问请求可以被允许,什么样的⽤户或者组的什么访问要被拒绝。只是是⼤概上的。让我们具体看看安全描述符到底描述了哪些东西?
获得管理员权限安全描述符包括:
1.与安全描述符关联的安全对象的拥有者的SID和此拥有者所在主的SID
2.⼀个DACL(discretionary access control list)
3.⼀个SACL(system access control list)
4.和安全描述符意思相符的控制位集合
安全对象(Securable Objects)
具有安全描述符的对象就是安全对象。window上的安全对象有:NTFS ⽂件系统上的⽂件或⽬录\命名管道匿名管道\进程线程\⽂件映射对象\本地或远程打印机\⽹络共享
知识点:
Security Descriptor:安全描述符,被访问者持有安全描述符。
安全标识符(SID Security Identifiers)
SID是⽤来标识安全主体。就是给安全主体⼀个唯⼀的ID。⽤户层⾯通过⽤户账户名识别,程序和资源之间通过SID识别。
如何获取SID
1、获取windows 10操作系统的 SID,已经测试过,是有些的
1.简单点的:
System.Security.Principal.WindowsIdentity currentUser = System.Security.Principal.WindowsIdentity.GetCurrent();
string sid = currentUser.User.ToString();
2、cmd 命令⾏获取SID
安全主体(security principal)?
安全主体是任何可通过操作系统进⾏⾝份验证的实体,例如⽤户帐户、计算机帐户、在⽤户或计算机帐户的安全上下⽂中运⾏的线程或进程,或者这些帐户的安全组。安全主体⼀直是控制对计算机中安全资源Windows的基础。每个安全主体在操作系统中由 SID (唯⼀) 。
来源:
个⼈理解:不管是从本地还是远程登⼊操作系统的的账户或程序都是安全主体
⾝份验证
⾝份验证是验证对象或⼈员⾝份的过程。当你对某个对象进⾏⾝份验证时,⽬的就在于验证该对象是否为正版。当你对某个⽤户进⾏⾝份验证时,其⽬标是验证该⽤户是否不是冒名顶替者。因此,⾝份验证不能保证对资源的访问权限,也不能授权使⽤资源。
在⽹络环境中,⾝份验证是向⽹络应⽤程序或资源证明⾝份的⾏为。
来源:
个⼈理解:登⼊操纵系统、服务器、应⽤软件的过程就是⾝份验证的过程,登⼊成功就是验证成功。
计算机帐户:加⼊域服务器的计算机,在域服务器中会⽣成⼀个账户就叫计算机帐户
⽤户帐户:每个安全主体都分配有⼀个唯⼀标识符,它将在其整个⽣命周期内保留。本地⽤户帐户和安全组是在本地计算机上创建的,它们可⽤于管理对该计算机上资源的访问权限。本地⽤户帐户和安全组由本地计算机上安全帐户管理器 (SAM) 管理。
window内置的安全主体:
虽然内置安全主体有很多,但正常能在权限设置中使⽤到的并不多,所以下⾯仅说明其中⼏个较重要的:
①Anonymous Logon:任何没有经过Windows XP验证程序(Authentication),⽽以匿名⽅式登录域的⽤户均属于此组;
②Authenticated Users:与前项相反,所有经过Windows XP验证程序登录的⽤户均属于此组。设置权限和⽤户权⼒时,可考虑⽤此项代替Everyone组;
③BATCH:这个组包含任何访问这台的(Batch Process);
④DIALUP:任何通过拨号⽹络登录的⽤户;
⑤Everyone:指所有经验证登录的⽤户及来宾(Guest);
⑥Network:任何通过⽹络登录的⽤户;
⑦Interactive:指任何直接登录本机的⽤户;
⑧Terminal server user:指任何通过登录的⽤户。
来源:
访问控制模型(DAC,MAC,RBAC,ABAC)
内容来源:blog.csdn/weixin_39638859/article/details/110464921
安全标识符如何⼯作
⽤户通过使⽤帐户名称来引⽤帐户,但操作系统内部指使⽤其安全标识符或 SID 在帐户的安全上下⽂中
运⾏的帐户 (进程) 。对于域帐户,安全主体的 SID 创建⽅法为:将域的SID 与帐户的相对标识符相连接 (RID) 。 SID 在其作⽤域内是唯⼀ (或本地) ,并且永远不会重复使⽤。
创建帐户或组时,操作系统将⽣成标识特定帐户或组的 SID。本地帐户或组的 SID 由计算机上本地安全机构 (LSA) ⽣成,并与其他帐户信息⼀起存储在注册表的安全区域中。域帐户或组的 SID 由域安全机构⽣成,并作为 User 或 Group 对象的属性存储在 Active Directory 域服务中。
对于每个本地帐户和组,SID 对于创建它的计算机都是唯⼀的。计算机上没有两个帐户或组共享同⼀ SID。同样,对于每个域帐户和组,SID 在企业内都是唯⼀的。这意味着,在⼀个域中创建的帐户或组的 SID 将永远不会与在企业内任何其他域中创建的帐户或组的 SID 匹配。
SID 始终保持唯⼀。安全机构从不发出两次相同的 SID,并且从不对已删除的帐户重复使⽤ SID。例如,如果某个⽤户在域中拥有⽤户帐户Windows离开⼯作,则管理员将删除其 Active Directory 帐户,包括标识该帐户的 SID。如果稍后她回到同⼀公司的不同⼯作,则管理员将创建⼀个新帐户,Windows Server 操作系统将⽣成⼀个新的 SID。新 SID 与旧 SID 不匹配;因此,⽤户不会从旧帐户访问任何帐户转移到新帐户。她的两个帐户代表两个完全不同的安全主体。
安全标识符体系结构
安全标识符是⼆进制格式的数据结构,其中包含可变数量的值。结构中的第⼀个值包含有关 SID 结构的信息。剩余值按层次结构排列 (类似于电话号码) ,并标识 SID 颁发机构(例如,"NT 颁发机构") 、SID 颁发域和特定的安全主体或组。下图演⽰ SID 的结构。
下表介绍了 SID 的单个值。
表 2
评论
描述S
指⽰字符串是 SID R
指⽰修订级别X
指⽰标识符颁发机构值Y
表⽰⼀系列⼦⾝份验证值,其中 n 是值的数量
下表介绍了 SID 的单个值。
安全标识符体系结构
评论描述
修订
指⽰特定 SID 中使⽤的 SID 结构的版本。标识符颁发机构标识可颁发特定类型安全主体的 SID 的最⾼级别颁发机构。 例如,Everyone 组的 SID 中的标识符颁发机构值为 1 (颁发机构) 。 特定服务器帐户或组的 SID 中的标识符Windows 颁发机构值是 5 (NT authority) 。
Subauthorities >在 SID 中保存最重要的信息,这些信息包含在⼀系列⼀个或多个⼦⾝份验证值中。 系列中最后⼀个值(不包括)的所有值共同标识企业中的域。 本系列的这⼀
部分称为域标识符。 系列中的最后⼀个值(称为"RID (标识符) 标识与域相关的特定帐户或组。
当使⽤标准表⽰法将 SID 从⼆进制转换为字符串格式时,SID 的组件更易于可视化:
S-R-X-Y1-Y2-Yn-1-Yn
在此表⽰法中,SID 的组件表⽰如下表所⽰。
SID 的最重要的信息包含在⼀系列⼦⾝份验证值中。 (-Y1-Y2-Y n -1) 是域标识符。 SID 的此元素在具有多个域的企业中变得⼗分重要,因为域标识符将⼀个域颁发的 SID 与企业中所有其他域颁发的 SID 相区分。 企业中没有任何两个域共享同⼀域标识符。
⼦⾝份验证值系列中的最后⼀ (-Y n ) 是相对标识符。 它将⼀个帐户或组与域中的所有其他帐户和组区分。 任何域中没有两个帐户或组共享同⼀相对标识符。
例如,内置 SID 的 SID 管理员组以标准化 SID 表⽰法表⽰为以下字符串:
详细内容:
访问掩码格式
所有安全对象均使⽤下图中所⽰的
格式来排列其访问权限。
此格式的低序位16位⽤于特定于对象的访问权限,接下来的8位适⽤于适⽤于⼤多数对象类型的 ,4个⾼序位⽤于指定 ,每个对象类型都可以映射到⼀组标准和特定于对象的权限。 访问 _ 系统 _ 安全位对应于 的权限。
访问控制列表(ACL:Access Control List )
ACL 中的每个 ACE 标识⼀个,并指定该受信者访问规则。安全对象的安全描述符 可以包含两种类型的 ACL :DACL 和 SACL
。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论