由于篇幅的关系,文章主要介绍一下能力验证需要查看的点,详细的技术知识可能不会写的特别详细,有需要的小伙伴可以关注一下公众号,不定期更新针对于等保2.0测评条款技术细节文章,例如pam模块详解、Linux文件扩展权限ACL等,陆续会更新上,并可免费获取2022能力验证作业指导书以及Linux模拟环境镜像文件,配合文章模拟分析复现食用更佳。
等保能力验证讨论交流群:274396566
续上篇,这篇主要分析能力验证中 Linux 主机的访问控制测评项
二、 访问控制
a)应对登录的用户分配账户和权限;
这条比较简单,基本是送分
查看/etc/passwd、/etc/shadow文件确认当前有哪些账户存在
同时这条条款还要去查看是否限制了默认账户的访问权限(来自GBT 28448-2019),其中限制默认账户远程登录,是一种常见的限权手段(能有效防御通过默认账户进行暴力破解攻击)。
运维安源策略也指出需要禁止默认账号远程登录。
Linux默认情况下会有许多的默认账户存在,默认情况下已禁用adm、lp、sync等默认账户登录权限,账户登录的shell一般为/sbin/nologin,反正不为/bin/bash或/bin/sh(当然还有其他shell能登录操作的,这里就不展开说了)。默认情况下,装机完毕只有root账户的shell为/bin/bash,一般运维人员也不会去修改UID=0,超级管理员root账户的默认权限或重命名,最常见的做法就是禁止root账户采用SSH方式登录(后面的条款也有要求,可以一并查了),具体查看哪些内容我们放在后面入侵防御那里仔细说。这里其实我们已root账户形式登录,就可以判断管理员没做限制了。
下图可以看到我们已root账户成功登录了,所以该条部分符合。
b)应重命名或删除默认账户,修改默认账户的默认口令;
这条个人认为考察的是对条款符合的判断依据,依据28448找到对应这条
这边标准给出的是或的概念,两者只要满足一条即可判为符合。当时笔者在做这个条款的时候,要求严格了一点,还要求他重命名或者禁用root账户,给了部分符合,这里就失分了。以前能力验证是找出有问题的点给分,多找问题不扣分也不给分,但是去年数了一下主机题目,刚好60道,所以现在应该是每个条款均要与之对应,考察的点更加细致了。
c)应及时删除或停用多余的、过期的账户,避免共享账户的存在;
这条查看的就比较细致了,先要找出人员与帐号对应关系。
① 人员帐号对应关系
操作系统账户
通过对比这两张表格,我们可以找到对应的人员管理关系。发现安全管理员虽有两人,但运维范围不同,赵伟的范围内并没有操作系统,所以SecurityM01或SecurityM02其中一个为多余帐号;通过查看/etc/passwd和/etc/shadow文件,确认yunwei账户可以登录,但作业指导书中给的并没有该账户,所以为多余账户。然后看到secadm账户在shadow文件中第二列添加了!!,使之与输入正确口令匹配出现问题,也就禁止了使用密码登录。
但我认为应该不能算停用吧,只能说让他口令匹配出错无法登录。通过PubkeyAuthentication的认证方式还是能登录的。根据上面图在第二位置添加!!,也只是提示Login by password disabled,个人认为并不能算停用。
回归正题,这里我们另外还要查看对应安全策略,确认每个账户是否在15天内进行过登录。
lslogins这个命令可以查看最后登录时间(下两图为测试环境截图,与能力验证现场情况无关)
当然还有用lastlog,但是发现与lslogins不同,网上说这两条命令均是去查看wtmp 日志文件,但不清楚为啥出来的会有不同,lastlog的最后登录时间更完善。
d)应授予管理用户所需的最小权限,实现管理用户的权限分离;
这里我们先看对应的安全策略
然后我们去查看 /etc/sudoers 文件,发现列了以下6组的sudo权限,我们主要关心的是system、audit、以及secadm组
接着这里查看/etc/group,确认我们需要对应账户分别隶属于哪个组
audit账户隶属audit、secadm组
securityM01、securityM02 隶属于secadm组
systemM01、systemM02 隶属于 system 组
那么很明显,audit账户明显有问题,具有了secadm(安全管理权限)的sudo权限了,违反了“各类设备应仅允许审计管理员能够查询审计日志,管理日志策略、日志文件和日志进程”这条安全策略。
另外针对于这条条款个人认为目前的主流操作系统均无法做到完全的权限分离,因为始终存在一个超级管理员账户,该账户可以在该系统上进行任意操作。真正能实现权限分离的是具有强制访问控制机制的系统,也就是我们说的敏感标记。或许禁用root账户能勉强达到这条权限分离要求,就是分配好对应权限后大家都别去用。
e)应由授权主体配置访问控制策略,访问控制策略规定主体对客体的访问规则;
这条他给的是符合,然后要查看的就是一个umask值,当UID>199并且用户的组名等于用户名,则umask=002其余umask=022
看主办方给出的答案默认应该就是符合。但这边依据28448的要求,还要查看第三点,根据上述的条款,发现audit账户是存在越权访问(当然可能指的是这个系统要存在越权漏洞,而不是说人为分配权限失误导致的越权)的情形,所以这条是有点疑问的。
但针对这条,平常我们在做测评的时候,如果只有一个root账户的情况下肯定也是不符合的,因为个人理解,就一个账户的话就不算做了访问控制策略。
f)访问控制的粒度应达到主体为用户级或进程级,客体为文件、数据库表级;
这个Linux操作系统默认符合,访问控制粒度主体为用户或者进程,客体为文件和目录级别。