Windows安全机制学习笔记(一)
作为一个菜鸟,在学习了解Windows安全机制的过程中,做了一下笔记聊记录下来,以作为整理和备忘之需。主要参考书籍《Windows Internals》和微软Open Specification [MS-SECO]。
一,基本概念
Microsoft Windows一直是一个致力于提供最安全的用户应用体验的操作系统。从Windows从早期的版本发展至今,其安全概念进过很多演化,其内部安全机制也 便得更加系统化和复杂。为了管窥Windows内部的安全机制是如何运作的,我们需要从一些基本的概念开始入手。
身份(Identity):身份在Windows操作系统中指向的东西很多,其可以是指一台电脑中的本地账户, 可以是指一个域中的一个域账户,一个用户组,域中的一台机器。身份的基本要素是其可以作为安全认证的单元。比如一台机器可以作为安全认真的基本单元,使得 从该机器发起的请求被接收方认为是合理的有效请求。身份可以被泛化为下面的几个概念:账户,用户,用户组,机器账户。
账户:账户是Windows中进行权限管理的基本单元,他可以是一个可以登录机器的用户,可以代表一台机器,或者是若干用户组成的一个用户组(群)。
用户:在Windows中,每个用户是一个由用户名和用户的安全信息组成的一个概念。这里的安全信息可以是用户 的密码,或者用户的指纹信息,或者用户的声音信息。用户可以分为本地用户和域用户。他们的差别在于其可以被使用引用的范围不同,本地账户只在机器本地有 效,而域用户在在整个安全域当中都可以被引用使用。
机器账户:任何一台安装了Windows操作系统的机器都代表了一个机器账户。这个账户可以由机器的BIOS名字来表示,或者由机器的DNS 名字来表示。
用户组:用户组指由若干用户组成的一个群体。这个群体中的用户贡献共享一些基本特征,并且可以作为安全认证、管理的一个单位。比如,一个组中的用户可以都对某项资源拥有相同的权限。
安全识别码(Security Identifier):简称为SID。它代表一个账户的身份。在Windows中,SID是一段不定长的数据,包含了授予这个安全识别码的分发者的信息和唯一确定其代表的账户的ID信息。一个SID的结构一般如下:
开头的部分是一段固定的文本。紧接其后的是顶级的签发SID的机构(域管理服务或者Windows本地安全服务)的ID,以及在在这个机构之下的若 干层级的安全机构的ID信息。这样的结构组成了一个安全信任链,在一个安全范围之内,机构A前发给机构B一个安全身份,认为其是可以签发其他安全身份的, 然后B给C签发一个安全身份,最后的C给我们的账户X签发了一个SID。上述的图表中的最后一部分Relative ID代表的就是账户的X的ID信息。关于SID我们后面会有专门的文章详细讲述。
用户组类型:在Windows中用户组可以分为安全组和分发组。安全组是用来进行权限管理、安全认证的。比如在 同一个安全组里面的用户可以都对机器A拥有管理员权限。分发组是用来帮助完成安全管理之外的其他功能的,比如分发组可以用来进行通知信息或者邮件的发送。 在一个分发组里面的用户都可以收到发送到这个组的邮件。
组的范围:用户组有其有效存在的范围。有效存在是指这个用户组可以被使用、引用。用户组的范围可以分为超级组、 全局组、域本地组和本地组。超级组可以包含在同一个Active Directory 群集(Forest)下面的任何域里面的用户,且可以授予在这个Active Directory 群集下面的任意一个域中资源的访问/管理权限。全局组只能包含这个组所在的域里面的账户,但是却可以授予这个组对当前Active Directory集群管理下的所有的可信任的域里面资源的访问/管理权限。域本地组可以包含来自当前Active Directory集群管理下的任意可信任域里面的账户,但是只能授予这个组对当前域的里面资源的访问/管理权限。本地组只存在于创建这个组的机器上且只 能包含这个机器上的本地账户和机器所在域里面的账户,但是只能授予这个组对当前机器上面资源的访问权限。
内嵌组(Nested Groups):在Windows 的Active Directory管理的可信任网络中,一个组可以包含另外一个用户组。这种情景被称为内嵌组。
账户域:在Windows network中,任何的账户都是存在于一定的域中,这个域负责给这个账户分配SID,管理其权限。域可以分为本地的和远程的。
本地域:在Windows network中,机器和机器之间默认是相互不信任的;任何单独的一台机器形成一个域;机器的本地账户都存在于这个域当中。
远程域:在Windows 网络中,某些服务器机器可以被配置成域管理器的角色,这些机器负责维护一定机器之间的信任关系。这些机器维护的信任区域就称为远程域。
域管理器:在远程域中,负责维护域中机器之间的信任关系的服务器称之为域管理器。
域成员身份:在远程域中,域管理器负责维护域中机器之间的信任关系,这也就意味着,域中非域管理器必须信任域管 理器。这种普通机器和域管理器之间的信任关系就称为域成员身份。如果一台机器信任某个域管理器,我们称为这台机器是该域管理器所维护的域中的一个成员。机 器可以选择加入域的信任关系,或者离开域的信任关系。