- A+
文章目录
一、说明
本篇文章主要说一说windows系统中访问控制的控制点的相关内容和理解。
二、windows的权限分配
先对windows的权限分配进行基本介绍,然后再说一说对测评项的基本理解。
2.1. 用户、用户组、内置安全主体
windows的文件权限或者其他的权限可直接分配给用户,也可分配给用户组和内置安全体,然后由用户组和内置安全体中的用户来继承权限。
而内置安全体没有列在本地用户和组的组中,但是在分配权限比如某个文件的权限中我们可以看到:
其中的Everyone是我们比较常见的,任何一个用户都属于Everyone(所以不要给Everyone赋予什么特殊的权限)。
又比如Authenticated Users,任何一个利用有效的用户帐户连接的用户都属于这个它。
其他的内置安全体就不说了,大家百度下就清除了。
2.2. 特殊的用户
这里特别说明下,有时候会被测评方的服务器中由于装了某些软件或者为了实现一些功能,可能会存在一些不是用来本地登录,而是用来执行某个任务的用户,比如虚拟机的用户:
从说明就能看出这个用户的用途,而且在切换用户时,是找不到这个用户的,但这个用户是实际存在的,而且也可以设置口令的。
在拒绝本地登录中添加了某用户,切换用户时的用户列表就不包含这个用户,也就无法切换过去。
但是,该用户可以作为批处理作业或者服务登录
比如我创建了一个用户test,在拒绝本地登录添加了test,则无法切换到test账户;
然后在作为批处理作业登录中添加test
接下来,就可以在计划任务中,使用该账户定时执行某程序或脚本了:
这里的操作很简单,就是在某个时间打开kugou。
嗯,如果对linux比较了解的同学,应该对这种用户机制比较熟悉。
2.3. 组策略中的用户权限分配
在组策略的用户权限分配中,可以将某项权限分配给用户或用户组:
上面的拒绝本地登录等权限,也就在这里进行分配,选择属性即可添加:
这里说一句,组策略中有些策略更改后,需要重启才能实现,具体是哪些大家百度吧。
2.4. 组策略用更细致的权限分配
组策略中的用户配置中的管理模板中可以设置很多的权限,比如控制面板的打开权限:
更多的大家可以自己去看看,不过用户配置中的设置仅针对当前登录用户。
2.5. 文件的权限分配
三、测评项
a)应对登录的用户分配账户和权限;
b)应重命名或删除默认账户,修改默认账户的默认口令;
c)应及时删除或停用多余的、过期的账户,避免共享账户的存在;
d)应授予管理用户所需的最小权限,实现管理用户的权限分离;
e)应由授权主体配置访问控制策略,访问控制策略规定主体对客体的访问规则;
f)访问控制的粒度应达到主体为用户级或进程级,客体为文件、数据库表级;
g)应对重要主体和客体设置安全标记,并控制主体对有安全标记信息资源的访问。
四、测评项a
a)应对登录的用户分配账户和权限;
这个测评项虽然只有一句话,但其实也算一个有多方面要求的测评项。
4.1. 测评项a要求1
对登录的用户分配账户
这个如果从字面意思来看,就是一个废话,用户都登录账户了,自然就存在着账户(除非是默认共享里$ipc的空用户名、空口令登录)。
所以这里的意思是应该是你本来就存在”多个账户“,然后当用户使用时要适当的”分配账户“给用户。
所以,如果windows系统中仅存在Administrator账户可用的话,就无所谓分配不分配了,无论谁来,都只能登录这一个账户,自然就不符合要求。
4.2. 测评项a要求2
应对登录的用户分配……权限
用户是一个自然人,操作系统上的权限无法直接赋予给一个自然人,所以这里是对用户登录的账户分配权限,从而间接的赋予了用户的权限。
那么分配啥权限呢?这里没说,不过从其他方面来说,如果就只存在一个Administrator账户,或者数个权限完全一致的管理员账户,那么分配权限就不存在意义了。
所以为了满足这个要求,应该至少存在两个账户,且权限不一样(至于权限是否最小化,不是这个测评项要测的)。
这个要求的隐藏前提是操作系统得具备权限划分的功能,当然,windwos默认是具备的。
至于哪个用户具体拥有哪些权限,一般看看用户的说明以及它隶属的用户组就能知道了,顶多再看看组策略中的用户权限分配。
另外就是看一看users、Everyone组的权限,因为所有用户都隶属于Everyone组,很多用户也都隶属于users组。
看users、Everyone组对于重要文件的权限,比如%systemdrive% windows\system、%systemroot%\system3.2\config等重要文件,是否做出了限制。
当然,访谈能问清楚是最好的。
4.3. 测评要求里的要求
测评要求中测评实施中的第二项内容光看测评项是看不出来的,属于一种规定吧,既然规定要这么查那就这么查。
对于默认账户、匿名账户的访问权限的限制,实际上是guest、users、Everyone组的权限的限制。(administrator是默认账户,但是没有需要的话,没必要限制它的权限吧)
对于guest来说,可以看看它是否被禁用,不过在测评项b中,要求删除默认账户,guest无法删除,但是可以被禁用
所以实际操作上,两个测评项都要去判断guest是否被禁用。
我个人倾向于测评项a不去检查guest,留在测评项b中检查。
至于users、Everyone组的权限的限制,在4.2中已经说过了。
五、测评项b
b)应重命名或删除默认账户,修改默认账户的默认口令;
对于windows而言,默认账户就是administrator和guest,guest检查是否被禁用即可。
对于administrator,看是否将administrator进行了重命名或者禁用(因为无法删除),至于默认口令,windows不存在默认口令,默认就符合(当然空口令是不符合的)。
测评项里之所以写默认口令,因为有些数据库的默认账户确实存在默认口令,一个测评项要用来查操作系统、数据库、应用,只能是大而化之的写了,什么都包括进去。
六、测评项c
c)应及时删除或停用多余的、过期的账户,避免共享账户的存在;
首先说一说多余账户,一般是先访谈,问对方某账户是干啥用的。
如果对方答不上来,你自己通过核查也无法判断,那么这就是多余账户(或者叫不明用途的账户)。
共享账户,顾名思义就是多人共用一个账户,这样带来的问题审计时无法追溯到某自然人。
测评项里说避免共享账户的存在,就是这个意思。
如果做到管理员用户与账户一一对应,那当然符合要求,但如果是一个管理员对应两个账户呢?仍然不存在共享账户
虽然是一个人用两个账户,但无论其中任何一个账户做的操作,仍然可以追溯到这个人身上。
不过结合该测评项的要求来看,一个管理员操作两个账户,本身也存在问题,因为一个人用两个账户的意义何在(在同一个服务器上)?如果没有特殊原因,那么其中一个账户有很大可能就是多余账户,所以测评实施中说了一一对应。
当然,如果存在某一个管理员必须要用使用两个账户处理业务(即不存在多余账户),而其他账户也没有并没有多人共用的情况,那么虽然并非一一对应,我个人觉得这也是满足该测评项要求的。
七、测评项d
d)应授予管理用户所需的最小权限,实现管理用户的权限分离;
其实就是查看是否对windows中的账户进行了角色的划分,且仅拥有为完成任务所需的最小权限。
新版的初级教程里是在这一块说的是“三权分立”,也就是系统管理员、安全员、审计员。
个人对系统管理员、安全员、审计员的理解如下:
系统管理员:管理系统中的账户、文档、文件等;
安全管理员:授权策略以及其它基本策略的设置,还有安全参数的设置。安全参数的设置是安全管理中心安全类中的安全管理中的测评项里说的,如果安全管理中的安全和安全管理员的安全是一个意思,那么安全管理员的职能就应该包括安全参数的设置。我对于安全参数的理解就是恶意代码防范和入侵防范,也就是杀毒软件、防火墙、ip策略、防入侵软件的参数的设置。
审计管理员:对系统中审计策略的管理,比如日志的存储策略,以及组策略中审核策略等。
但是,初级教程只是一个模板,也不一定说非得按照系统管理员、安全员、审计员的模式来设置角色,比如设置了某个账户来专门管理中间件的等等,按照实际情况进行判断。
至于判断账户的权限,看本文的windows的权限分配部分就知道了。
这里举一两个例子,比如审计员账户,不能让它隶属于Administrators组,应隶属于Event Log Readers组:
还有相关的日志文件的权限,也应该分配给审计员。
另外是不是应该将组策略、注册表的编辑权限、服务器的关机权限仅赋予安全管理员或者系统管理员,等等。
另外,此处按照理论上应该和安全管理制度对应起来的,比如被测评单位说设置了系统管理员、安全员、审计员,那么安全管理制度中是否真有这三个人(人和账户一一对应,一人用三个账户的话,权限分配就没有意义了)等等。
八、测评项e
e)应由授权主体配置访问控制策略,访问控制策略规定主体对客体的访问规则;
这里不知道似乎涉不涉及到强制控制控制,也即由某一个专门的账户来分配用户的权限,而windows的权限分配方式其实没有达到强制控制控制的要求。
在强制控制控制的要求下,某账户所创建的资源,也拒绝用户的完全控制。系统的安全策略完全取决于由系统制定的某账户或角色来设置。
而windows下,账户对它创建的文件是具备几乎所有权限的,从这一点来看,就不符合强制控制控制,因为任何一个账户都可以分配权限(比如可以分配由它创建的文件的权限)。
如果不涉及强制控制控制的话,那么指定由windows的某个账户分配权限即可,即该账户应拥有windows重要文件的权限(且仅该用户拥有),以及修改用户权限的权限(设置用户隶属于哪个用户组的权限和组策略的打开权限)。
这里我不太清楚windows的机制,对于一个普通用户(隶属于users组),虽然可以打开compmgmt.msc文件,能看到用户和用户组的情况,但是好像没有什么执行权限,比如尝试将自己添加到administrators组中时,是不会保存成功的:
另外,对于windows的system等系统文件和文件夹,使用管理员账户也不能编辑它的权限,因为这类文件的所有者是TrustedInstaller,是windows内置的一个内置安全主体,比如对于compmgmt文件:
不过可以更改它的所有者,比如更改为administrators组,然后就可以将users组的权限直接去掉:
这样,隶属于users组的普通用户,就直接无法打开计算机管理了:
然后再把compmgmt文件的所有者给改回去,这样应该更安全一点了(记得输入全程:NT SERVICE\TrustedInstaller)。
当然,这里我只是举一个例子,没说一定得这么做。
哦,对了,windows的比较重要的系统文件是system32文件夹中的文件(比如这个文件夹中的cmd.exe就很重要,需要对这个文件的权限进行设置):
九、测评项f
f)访问控制的粒度应达到主体为用户级或进程级,客体为文件、数据库表级;
测评项的要求应该是层层递进的,测评项e要求你设置访问控制策略,f项则是要求你设置的访问控制的粒度达到“主体为用户级或进程级,客体为文件、数据库表级”。
所以在实际测评中,如果测评项e的结果是不满足,f项肯定也不满足。
对于windows而言,提供的策略设置机制,是可以达到主体为用户级、客体为文件级的。
所以测评项f是否能被满足,就看是否做了访问控制策略,以及策略是否明确到某个用户(而不仅仅是用户组),某个文件(不仅仅是文件夹)。
当然,实际嘛……各位看情况吧。
十、测评项g
g)应对重要主体和客体设置安全标记,并控制主体对有安全标记信息资源的访问。
这里肯定涉及到了强制访问控制,给敏感信息设置安全标记,控制主体(也就是用户)对敏感信息的访问。
windows自带的访问控制机制肯定是不符合要求的,需要使用第三方软件或者定制的windows系统(对windows系统进行二次开发?感觉不大可能。)
至于这里的安全标记,初级教程里写得很清楚,无所谓是什么形式,可以是数字、字母什么的,我觉得甚至也可以颜色的形式表现出来,但关键的是需要有一套机制使得你可以通过这些标记实现强制访问控制,这肯定得用第三方软件了:
比如某个windows第三方的本地资源浏览器,就可以自己给文件夹、文件什么的设置颜色、属性、标签:
但是这软件没有禁用windows自带的本地资源浏览器等,也没有实现强制访问控制,只能加标记而已……
这里说一句,安全标记不一定要展现出来(图形化),能实现强制访问控制就可以。
十一、总结
访问控制的难点在于后面几个测评项,特别理论上权限应该如何分配,和实际中要如何实现权限的分配。
比如权限应该如何分配,虽然有三权分立这个模板,即系统管理员、安全管理员、审计管理员。
但是这三个管理员理论上负责的权限,是不存在一个明确的定义的(反正初级教程、测评要求里没写,当然其他书上以及网络上会有一个模糊的范围),可能需要在实际测评中进行确认。
另外,假如使用三权分立的模板,那么如何落地?
windows自带安全审计的审计策略的设置,需要进入组策略中进行设置,但是用户权限分配也在组策略中。
问题就来了,编辑组策略的这个权限是应该分配给审计管理员还是安全管理员呢?
不过组策略本身的权限设置都达到某一个具体的策略的设置权限的话,就不存在这个问题了,不过我自己没找到。
至于涉及到强制控制访问的项,反而没啥好疑惑的,因为windows上基本就没实现,哈哈。
*本文原创作者:起于凡而非于凡,本文属于FreeBuf原创奖励计划,未经许可禁止转载