一、3A安全体系介绍

  现代计算机操作系统为实现各种层面的资源共享基本上都被设计为一个多用户多任务的操作系统,为防止资源被滥用或盗用每种系统都会有一套完整的安全管控机制,即我们通常所说的3A安全体系,该安全体系源于我们人类社会现实生活中的安全审计流程,其它安全体系框架如下:

认证(Authentication):对用户的身份进行验证,验证用户的合法性,即:你是谁!
授权(Authorization):是对通过认证的用户进行授权,授权其可以使用哪些资源,即:你能有哪些权限!
计费审计(Accouting|Audition):是记录用户使用资源情况,这些信息将作为计费或安全审计的依据。即:你用了多少?做了什么?

一句话:我知道你是谁,我给你规定的了使用权限,请你遵守规则,我可以审计你的行为!

一、Linux系统的用户和组


  最终获取资源使用权的是肯定是自然人,但操作系统如何能识别具体的自然人并允许他们按规定该资源,这就是系统对用户和组的访问控制权限来解决的问题,操作系统可以通过多种技术来识别自然人,如芯片授权(门禁卡、加密狗),生物特征识别(指纹、虹膜、面部识别等),传统的用户账号等。本小节将介绍如何解决3A安全体系中的第一个环节Authentication,用户身份验证的问题。

  操作系统关联到具体的自然人依靠的就是用户,为了便于批量授权于是便有了用户组的概念,基本上所有操作系统都是这样的设计理念,不论是用户还是用户组都只是赋权的一个实体媒介罢了,系统管理员为每个自然人分配一个用户账号便将该账号具备权限授予了自然人。同样在一个部门或组织单位中多个自然人的一些共有权限就可以利用系统的用户组来完成。

    Linux身份验证过程:用户向系统提交用户名和密码,Linux系统通过比对本地存储的用户信息与用户  提交信息的一致性来确定即将登录的用户是否合法。  如果是合法用户则会向用户返回Token和安全实体标识。
    Windows身份验证过程:用户向系统提交用户名和密码,Windows的本地LSA同样会比对一致性,同样会返回Token,但是包含了用户所属组的信息、以用户在本系统或域内权限的摘要信息,用户在访问资源时会完成比对过程,这也是为什么在Windows系统中每次授权后都需要注销重新登录的原因,就是为了重新获取系统或域内的新的访问令牌。

1. linux系统中用户和组

  Linux系统以ID来识别用户类型,分为管理用户、普通用户两种。Linux系统识别UID,Windows系统依赖SID。具体如下:

用户 UID标识用户

管理用户:管理员root uid:0 windows内置管理员账号SID以500结尾
普通用户:uid:1-60000 自动分配
    系统用户:1-499(CentOS6), 1-999 (CentOS7、8)
    用于守护进程获取资源进行权限分配。
    登录用户:500+(CentOS6), 1000+(CentOS、7)
    登录用户用于交互式登录,关联自然人,授权实体对象。
验证方法:
    Linux系统:id username
    [root@Centos8 ~]$id root
    uid=0(root) gid=0(root) groups=0(root)
    [root@Centos8 ~]$id houzhihui
    uid=1000(houzhihui) gid=1000(houzhihui) groups=1000(houzhihui)
    [root@Centos8 ~]$
    Windows系统:whoami 
    C:\Users\Administrator>whoami /user
    用户信息
    ----------------
    用户名                        SID
    ============================= ==================
    desktop-aajmtra\administrator S-1-5-21-2701678464-1708204996-1248473524-500
    C:\Users\Administrator>
    C:\Users\microcisco>whoami /user
    用户信息
    ----------------
    用户名                     SID
    ========================== =======================
    desktop-aajmtra\microcisco S-1-5-21-2701678464-1708204996-1248473524-1001
    C:\Users\microcisco>

用户组 GID标识用户组

管理员组:root, 0
普通组:GID
    系统组:1-499(CentOS6), 1-999(CENTOS7)
    普通组:500+(CentOS6), 1000+(CENTOS7) 

  关于UID和GID的使用范围规定在文件/etc/login.defs中都有明确定义,如果有定制需求则可以修改文件来完成,如下图所示: 基本组与辅助组

  与Windows操作系统不同,Linux系统中默认情况下每创建一个用户都会自动创建一个与该对应的用户组,作为该用户的基本组,而且组名与用户名相同,GID与UID也相同。与基本组相对应的是辅助组,二都区别如下:

用户的基本组:与用户账号一同创建
    该组只有该用户一个成员,组名与用户名相同,GID与UID也相同,也称为主组或私有组。
用户的辅助组:用于批量授权
    辅助组只是一个相对概念,其成员不只限于一个用户成员也被称为公共组。辅助组有助于用户方便的获得额外的权限。如:某个资源需要共享给整个部门成员来使用,则只需建立一个公共组,并在该资源上针对建立的公共组赋权,然后将该部门成员的用户账号加入到该公共组即可实现批量授权。因此辅助组的辅助概念是相对用户而言的,一个用户可以属于零个或多个辅助组。

二、Windows系统的用户和组

温故而知新

  关于网络资源管理的安全体系,微软公司的Windows系统也有多年来引以为傲的安全管理体系活动目录(Active Directory),可以说在企业桌面操作系统、终端管理方面功能相当的完善,作为用户与组的专题文章少了微软的活动目录总觉得缺些什么,本小节介绍就以微软活动目录中的用户和组运用作为知识扩展吧!

  微软活动目录的设计初衷就是对网络中分布零散的资源建立动态的索引,并由专业的信息维护人员集中授权管理,活动录目将域为作为网络安全边界是一种逻辑概念,所有加入该安全域内网络资源、用户、终端都作为域的对象,受活动目录的权限管理体系集中管控,用户账号和用户组是赋权对象这一点与Linux系统是一样的.如果说最大的不同便是:Windows的组支持嵌套,而Linux的组不支持嵌套,所以Windows的授权管理功能上更丰富,但正是因为支持组的嵌套所以很容易引起交叉授权而且导致权限管理混乱,为此微软早在Windows server 2000时代就是强烈给出客户最佳授权操作原则:AGUDLP

A表示用户账号 Account
    账号分为本地账号和域用户账号,当然组也分为本地用户组和域用户组,本地用户账号和组由计算机系统本地址的SAM库来存储管理。只有计算机加入域后才可以使用域用户账号,域用户账号和域用户组则有域控制器(DC)来负责存储管理,计算加入域后,域管理员可以将域用户账号加入到本地用户组来赋予本地计算机资源的使用权限。
G表示全局组 Global
    全局组:主要是用来组织用户账号的,作用范围:域树内任何域,全局组内的成员可以是同一个域的用户账户与全局组,可以访问任何一个域内的资源。注意:出现嵌套了,全局组可以套全局组了
U表示通用组 Universal
    通用组:作用范围林内整个林和信任域,作为林内跨域资源访问授权对象的组织容器,通用组及组内任何成员会被写入一个称为全局编目(Global Caltalog,GC)的数据库 通用组可以访问任何一个域内的资源,通用组可以包含所有域内的用户账户、全局组和通用组。通用组可以理解为恐怖电影中的通灵师携带诉求者通往另一个世界(这个玩笑很形象吧,不过要注意呀!当域功能级别处于Windows2000混合模式时,不能创建具有通用组的安全组,必须提升域的功能级别才可以启有通用组。)
DL表示域本地组 Domain Local
    域本地组:作用范围本地域,只能够访问本域内的任何资源,如果该组内成员想访问其它域的资源则本地组必须加入全局组由对方域管理员针对全局组授权来实现跨域资源访问,本地域组的成员可以是同一个域的本地域组,也可以是任何域内的账户、全局组和通用组,他们能访问的资源只是该本地域组所在域的资源
P表示资源权限 Permissions
    用户对资源的访问权限,不论Windows还是Linux都有三种基本权限:其中执行权限分别与读、写权限配合并根据作用不同的文件类型就可以展现给用户很花俏功能,但不管展现给用户的操作是多么的花俏都是这三种权限的组合:
    读取权限:权限标识为r Readable读取文件内容 影响atime
        作用于文件:读取文件内容
        作用于目录:可以使用ls、dir查看此目录中文件列表
    写入权限:权限标识为w Writable修改文件内容 影响mtime
        作用于文件:可以修改、删除文件内容
        作用于目录:可在此目录中创建文件,也可删除此目录中的文件
    执行权限:权限标识为x eXcutable执行权限,作为读、写权限的基石组合权限。
        作用于文件:由指定的安全上下文进程将文件提请给内核由进程执行进一步处理操作
        作用于目录:可以使用ls、dir查看此目录中文件元数据(须配合r),可以cd进入此目录。 
    特殊执行权限:
        权限标识X 只给目录x权限,不给文件x权限

域内与域间授权:AGDLP

先将用户(Acounts-A)加入全局组G;再将G加入域本地组DL;最后给DL授权(Permissions-P)

这样做的好处,域间访问两个域的管理员将各自将对方的全局组加入域本地组后,全局组成员就可以跨域访问资源,后期成员调整只由各自域的管理员管控,而不必劳烦对方域的管理员啦!

林内树间跨域访问授权:AGUDLP 先将用户(Acounts-A)加入全局组G;再将再将G加入域本地组DL;最后给DL授权(Permissions-P)

这样做的好处,将全局组加入通用组后全局组内成员便具备了整个林内建立域信任关系的跨域访问通行证,后期组内成员管理只由本地域管理员来管控!

四、总结

无论是Linux还是Windows系统,用户的作用是与自然人关联,用户组是组织管理用户的容器便于批量授权管理,二都都是资源访问授权的授权实体对象,解决的是3A安全体系中的第一个A认证(Authentication)身份验证问题

好了本小节先只写到这,剧透一下,下一节将介绍用户和组的管理问题!