一、身份鉴别
该控制点下有四个检测项,分别是:
控制点 | 测评项 | 测评要点 | 高风险判定 |
身份鉴别 | [重要]a)应对登录的用户进行身份标识和鉴别,身份标识具有唯一性,身份鉴别信息具有复杂度要求并定期更换; | 1、身份鉴别方式 2、用户身份标识具有唯一性,Linux操作系统以UID做为用户身份标识,具有唯一性。 3、是否存在空口令账户。 4、是否配置口令复杂度策略。 5、是否配置口令定期更换策略。 6、当前口令组成。 | 存在弱口令或相同口令(二级及以上系统) |
[重要]b)应具有登录失败处理功能,应配置并启用结束会话、限制非法登录次数和当登录连接超时自动退出等相关措施; | 1、是否配置登录失败处理策略。 2、是否配置登录连接超时策略。 | ||
[关键]c)当进行远程管理时,应采取必要措施防止鉴别信息在网络传输过程中被窃听; | 是否开启SSH协议。 | 鉴别信息防窃听措施缺失(二级及以上系统) | |
[关键]d)应采用口令、密码技术、生物技术等两种或两种以上组合的鉴别技术对用户进行身份鉴别,且其中一种鉴别技术至少应使用密码技术来实现。 | 是否采用双因子鉴别的方式。 | 未采用多种身份鉴别技术(三级及以上系统) |
身份鉴别A
[重要]a)应对登录的用户进行身份标识和鉴别,身份标识具有唯一性,身份鉴别信息具有复杂度要求并定期更换;
【检查方法】
1、身份鉴别方式:
询问管理员,了解系统是否已设置密码,核查登录过程中系统账户是否使用密码进行验证登录,如果服务器使用堡垒机进行登录也要描述服务器本身身份鉴别方式;
2、身份标识唯一性:
Linux以用户UID做为身份唯一标识,Linux默认符合;
3、是否存在空口令账户:
通过执行命令“more /etc/passwd”检查用户状态,通过命令“more /etc/shadow”查看是否为空口令;
- /etc/passwd文件:Linux系统中的每个用户都在/etc/passwd文件中有一个对应的记录行,它记录了这个用户的一些基本属性。每行记录又被冒号(:)分隔为7个字段。
用户名:口令(由于该文件对所有用户可读,出于安全性考虑,这里的口令字段仅用占位符表示,而真正的口令字段存放在/etc/shadow文件中):用户标识号:组标识号:注释性描述:主目录:登录Shell(nologin相当于禁用账户)。
[root@JingNan Gu ~]# more /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin ==>表示该用户无法登录进shell,相当于禁止用户登录
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
每个用户名所对应的口令字段均有占位符“X”,因此可以判定不存在空口令账户
- /etc/shadow文件:/etc/shadow中的记录行与/etc/passwd中的一一对应,它由pwconv命令根据/etc/passwd中的数据自动产生,它的文件格式与/etc/passwd类似,由若干个字段组成,字段之间用":"隔开。
登录名:加密口令:最后一次修改时间:最小时间间隔:最大时间间隔:警告时间:不活动时间:失效时间:标志
[root@JingNan Gu ~]# more /etc/shadow
root:$6$yWyFGZy26VecnzaI$Rg42MnByStRJBqofxLJ3TJd9lTK2WlJ6OImHZ32AAKVgqganE5YnxDPx1Q3ZH8kRYfV3w9qNJPfbaSMoa1Zx3.::0:99999:7:::
bin:*:18353:0:99999:7:::
daemon:*:18353:0:99999:7:::
adm:*:18353:0:99999:7:::
lp:*:18353:0:99999:7:::
root账户口令已加密
4、是否配置口令复杂度策略:
通过执行命令“more /etc/pam.d/system-auth”检查,/etc/pam.d/system-auth优先级高于/etc/login.defs。口令应至少8位包含数字、大小写字母和特殊字符。
[root@localhost ~]# more/etc/pam.d/system-auth ===> 密码长度和复杂度规则
password requisite password requisite pam_cracklib.so retry=5 difok=3 minlen=8 dcredit=-3 ucredit=-2 lcredit=-4 ocredit=-1 dictpath=/usr/share/cracklib/pw_dict
retry=5 # 修改密码,可以重试的次数
difok=3 # 与旧密码不同的字符个数
minlen=8 # 新密码最小长度
dcredit=-3 # 数字个数。大于0,最多;小于0,最少
ucredit=-2 # 大写字母个数。大于0,最多;小于0,最少
lcredit=-4 # 小写字母个数。大于0,最多;小于0,最少
ocredit=-1 # 特殊字符个数。大于0,最多;小于0,最少
5、是否配置口令定期更换策略:
通过执行命令“more /etc/login.defs”检查。口令有效期应不大于90天。
[root@localhost ~]# more /etc/login.defs ====> 密码长度和定期更换规则
PASS_MAX_DAYS 90 ===> 密码有效期为90天
PASS_MIN_DAYS 0 ===> 密码最短修改时间,增加可以防止非法用户短期内多次修改登录密码
PASS_MIN_LEN 7 ===> 密码最小长度为7位
PASS_WARN_AGE 7 ===> 密码过期前7天提示修改
6、当前口令组成描述:如:当前口令8位以上,包含数字大小写字母和特殊字符。
以上6点都符合,该测评项可以给符合,否则部分符合。
身份鉴别B
[重要]b)应具有登录失败处理功能,应配置并启用结束会话、限制非法登录次数和当登录连接超时自动退出等相关措施;
【检查方法】
1、登录失败
- 本地登录失败处理策略:使用“cat /etc/pam.d/system-auth”,核查文件中的pam_tally2.so模块信息。
[root@localhost ~]# more /etc/pam.d/system-auth
auth required pam_lly2.so onerr=fail deny=5 unlock_time=300 even_deny_root root_unlock_time=10
- 远程登录失败处理策略:使用“cat/etc/pam.d/sshd” ,核查pam_tally2.so模块信息。
[root@localhost ~]# more /etc/pam.d/sshd
auth required pam_lly2.so onerr=fail deny=5 unlock_time=300 even_deny_root root_unlock_time=10
2、登录连接超时
使用“cat /etc/profile”,查看是否有TMOUT参数
[root@localhost ~]# more /etc/profile
==> 是否有类似TIMEOUT=300s参数
身份鉴别C
[关键]c)当进行远程管理时,应采取必要措施防止鉴别信息在网络传输过程中被窃听;
【检查方法】
1、记录远程管理方式,
1)询问管理员,采取何种方式进行远程管理.以root身份登录操作系统.查看是否运行sshd服务,相关端口是否已经打开,诺未使用ssh远程管理,则查看是否使用了telent协议进行远程管理(telnet默认不符合)
[root@localhost ~]# service -status-all | grep sshd ==> 查看是否运行sshd服务
[root@localhost ~]# netstat -an | grep 22 ===> 查看相关端口是否已经打开
[root@localhost ~]# service --status-all | grep running ==> 若未使用ssh协议,查看是否使用了telnet协议进行远程管理
2)使用抓包工具查看协议是否是加密的。
3)本地化管理,此项不适用。
D.应采用口令、密码技术、生物技术等两种或两种以上组合的鉴别技术对用户进行身份鉴别,且其中一种鉴别技术至少应使用密码技术来实现
访谈和核查系统管理员在登录操作系统的过程中使用了哪些身份鉴别方法,是否采用了两种或两种以上组合的鉴别技术,如口令教字证书Ukey、令牌、指纹等,是否有一种鉴别方法在鉴别过程中使用了密码技术
2.访问控制
A.使用“ls-l 文件名”命令查看重要文件目录的权限设置是否合理(配置文件不大于644,可执行文件权限不大于755)
[root@localhost ~]# ls -l /etc/passwd ==> 查看配置文件
-rw-r--r--. 1 root root 1040 9月 7 22:52 /etc/passwd
B.应重命名或删除默认账户(例如:adm、lp、sync、shutdiwn、halt、mail、uucp、operator、games、gopher、ftp) ,修改默认账户的默认口令。
1)执行more命令,查看 /etc/shadow文件是否存在默认无用账户
[root@localhost ~]# more /etc/shadow ===> 查看是否存在默认账户
root:$6$OhoQzq0exU6byeqp$Fk6gtckmK.X8IJxevwTUxkTcvUuL4TojEO8KQY/uqKlUkytqVpO
9J4zDafOYBkb33OnHiPtQxAaP0RPYM8y4a0::0:99999:7:::
bin:*:16659:0:99999:7:::
daemon:*:16659:0:99999:7:::
adm:*:16659:0:99999:7:::
lp:*:16659:0:99999:7:::
sync:*:16659:0:99999:7:::
2)查看root账户能否远程登录(应为不能)
C.应及时删除或停用多余的、过期的账户,避免共享账户的存在
1)应核查是否不存在多余或过期账户,如查看games、news、 ftp、 1p等系统默认账户是否被禁用,特权账号halt、shutdown是否被删除
2)应访谈网络管理员、安全管理员、系统管理员不同用户是否采用不同账户登录系统
D.应授予用户所需的最小权限,实现管理用户的权限分离。
1)以有相应权限的身份登录进入Linux, 使用more查看/etc/passwd文件中的非默认用户,询问各账户的权限,是否实现管理用户的权限分离(各用户均仅具备最小权限,且不与其他用户权限交叉,设备支持新建多用户角色功能)
[root@localhost ~]# more /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
2)以有相应权限的身份登录进入Linux, 使用more查看/etc/sudo.conf文件,核查root级用户的权限都授予哪些账户(管理员权限仅分配给root用户)
[root@localhost ~]# more /etc/sudo.conf
#
# Default /etc/sudo.conf file
#
# Format:
# Plugin plugin_name plugin_path plugin_options ...
# Path askpass /path/to/askpass
# Path noexec /path/to/sudo_noexec.so
# Debug sudo /var/log/sudo_debug all@warn
# Set disable_coredump true
#
# Sudo plugins:
#
# The plugin_path is relative to ${prefix}/libexec unless fully qualified.
# The plugin_name corresponds to a global symbol in the plugin
# that contains the plugin interface structure.
# The plugin_options are optional.
#
# The sudoers plugin is used by default if no Plugin lines are present.
Plugin sudoers_policy sudoers.so
Plugin sudoers_io sudoers.so
E.应授予主体配置访问控制策略,访问控制策略规定主体对客体的访问规则。
1)询问管理员是否由指定授权人对操作系统的访问控制权限进行配置
2)检查账户权限配置,了解是否依据安全策略配置各账户的访问规则。
F.访问控制粒度应达到主体为用户级或进程级,客体为文件、数据库表级。
使用“ls -1文件名”命令,查看重要文件和目录权限设置是否合理,应重点查看以下文件和目录权限是否被修改过
[root@localhost ~]# ls -l /etc/passwd ==> 权限
-rw-r--r--. 1 root root 1040 9月 7 22:52 /etc/passwd
G.应对重要主体和客体设置安全标记,并控制主体对有安全标记信息资源的访问
1)明确系统中是否有敏感信息
2)在主体用户或进程划分级别并设置敏感标记,在客体文件设置敏感标记
3)应测试是否依据主体、客体安全标记控制主体对客体访问的强制访问控制策略
4)以有相应权限的身份登录进入Linux,使用more查看/etc/selinux/config文件中的SELINUX参数的设定
[root@localhost ~]# more /etc/selinux/config
# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
# enforcing - SELinux security policy is enforced.
# permissive - SELinux prints warnings instead of enforcing.
# disabled - No SELinux policy is loaded.
SELINUX=enforcing =============> 使用了selinux
# SELINUXTYPE= can take one of three two values:
# targeted - Targeted processes are protected,
# minimum - Modification of targeted policy. Only selected processes are
protected.
# mls - Multi Level Security protection.
SELINUXTYPE=targeted
Linux服务器默认关闭selinux服务,或者已使用第三方主机加固系统或对系统内核进行了二次开发加固。
3.安全审计
A.应启用安全审计功能,审计覆盖到每个用户,对重要用户的行为和重要安全事件进行审计
1)以root 身份登录进入Linux, 查看服务进程
[root@localhost ~]# service auditd status
[root@localhost ~]# service ryslog status
====> 显示running为开启服务
2)若运行了安全审计服务,则查看安全审计的守护进程是否正常
[root@localhost ~]# ps -ef | grep auditd
root 347 2 0 16:36 ? 00:00:00 [kauditd]
root 838 1 0 16:36 ? 00:00:00 /sbin/auditd -n
root 2723 2631 0 17:37 pts/0 00:00:00 grep --color=auto auditd
3)若未开启系统安全审计功能,则确认是否部署了第三方安全审计工具
4)以root身份登录进入Linux查看安全事件配置:
[root@localhost ~]# grep "@priv-ops" /etc/audit/filter.conf
grep: /etc/audit/filter.conf: 没有那个文件或目录
[root@localhost ~]# more /etc/audit/audit.rules
## This file is automatically generated from /etc/audit/rules.d
-D
-b 320
B.审计记录应包括事件的日期和时间,用户、事件类型,事件是否成功及其他与审计相关的信息
执行“ausearch -ts today”命令(ts为查看指定时间后的日志),或者“tail -20 /var/log/audit/audit.log”命令查看审计日志。
[root@localhost ~]# ausearch -ts today
[root@localhost ~]# tail -20 /var/log/audit/audit.log
type=USER_AUTH msg=audit(1631090264.872:353): pid=2627 uid=0 auid=4294967295 ses=4294967295 subj=system_u:system_r:sshd_t:s0-s0:c0.c1023 msg='op=success acct="root" exe="/usr/sbin/sshd" hostname=? addr=192.168.17.1 terminal=ssh res=success'
type=CRED_ACQ msg=audit(1631090264.873:354): pid=2627 uid=0 auid=4294967295
审计记录包括事件的日期、时间、类型、主题标识、客体标识和结果
C.应对审计记录进行保护,定期备份,避免受到未预期的删除、修改或者覆盖。
1)访问管理员,了解审计记录的存储、备份和保护措施
2)检查是否定时将操作系统日志发送到日志服务器等,是否使用syslog或SNMP方式将操作系统日志发送到日志服务器等。 如果部署了日志服务器,则登录日志服务器,核查被测操作系统的日志是否在收集范围内
操作系统日志定期备份,共定期将本地存储日志转发至日志服务器
D.应对审计进程进行保护,防止未经授权的中断。
1)访谈对审计进程监控和保护的措施
2)测试使用非安全审计员中断审计进程,查看审计进程的访问权限是否设置合理。
3)查看是否有第三方系统对被测操作系统的审计进程进行监控和保护
审计进程不具备非安全审计人员权限的用户修改
部署了第三方工具,可以实时记录审计日志,管理员不可以对日志进行删除操作。
4.入侵防范
A.应遵循最小安装原则,仅安装需要的组件和组件程序
1)查看安装手册,核查安装操作系统时是否遵循最小安装原则;
2)使用“yum list installed”命令查看操作系统中已安装的程序包,询问管理员是否有目前不需要的组件或应用程序(应为否)
B.应关闭不需要的系统服务、默认和高危端口。
1)使用“service -status-all | grep running”命令查看危险的网络服务是否已经关闭
[root@localhost ~]# service -status-all | grep running
2)使用“netstat -ntlp”命令查看并确认开放的端口是否都为业务必须的端口,是否关闭非必须的端口
[root@localhost ~]# netstat -ntlp
3)Linux操作系统中不存在共享问题
C.应通过设定终端接入方式或网络地址范围,对通过网络进行管理的管理终端进行限制
1)查看 /etc/hosts.deny文件是否有“ALL:ALL”(禁止所有请求)字样、/etc/hosts.allow文件中是否有”ssh: 地址“配置(限制IP)。
[root@localhost ~]# more /etc/hosts.deny
[root@localhost ~]# more /etc/hosts.allow
2)核查是否通过防火墙(radus、堡垒机、安全域)对接入终端进行限制
D.应能发现可能存在的已知漏洞,并经过充分测试评估后,及时修补漏洞。
1)查看甲方自查的洞扫报告或通过第三方检查的漏洞报告,有无高风险漏洞
2)系统有无漏洞测试环境,补丁更新的机制和流程加何?
3)访谈补丁升级机制,查看补丁安装情况:#rpm -qa grep patch
[root@localhost ~]# rpm -qa | grep patch
运维团队定期进行漏洞扫描,在发现安全风险后及时进行修补。
补丁更新时间为最近。已对补丁进行控制和管理
E.应能够检测到对重要节点进行入侵的行为,并在发生严重入侵事件时提供报警
1)访谈并查看入侵检测措施。通过“more /var/log/secure | grep refused ”命令查看入侵的重要线索(试图进行telnet,tfp操作等)
[root@localhost ~]# more /var/log/secure | grep refused
2)检查是否启用了主机防火墙、tcp syn保护机制等。
3)访谈管理员,是否安装了主机入侵检测软件,查看软件是否有报警功能。可执行“find /-name <daemon name> -print”命令查看是否安装主机入侵检测软件如:ragon Squire by Enterasys Networks ,ITA by Symantec. Hostsentry by Psionic Software.Logcheck by Psiomc Software. RealSecure-agent by ISS
[root@localhost ~]# find /-name<daemon name> -print
4)检查网络拓扑图,核查网络中是否部署了网络入侵检测系统
入侵的重要路径均被切断,不存在系统级入侵的可能
开启了主机防火墙的相关设置
安装了基于主机的IDS设备。诺主机上未部署IDS设备,则可以在网络链路上查看主机本身是否为IDS或IPS设备
在发生入侵事件时有记录和报警措施等
5.恶意代码防范
应采用免受恶意代码攻击的技术措施或主动免疫可信验证机制及时识别入侵和病毒行为,并将其有效阻断。
1)核查操作系统中安装的防病毒软件。访谈系统管理员,了解病毒库是否经常更新。核查病毒库是否为最新版本(更新日期是否超过一星期,应为否)
2)核查操作系统是否实现了可信验证机制,是否能够对系统程序、应用程序和重要配置文件/参数进行可信验证
部署了网络版的防病毒软件,病毒库为最新版本,支持防恶意代码统一管理
部署了主动免疫可信验证机制,可及时阻断病毒入侵行为。
6.可信验证
可基于可信根对计算设备的系统引导程序、系统程序、重要配置参数和应用程序等进行可信验证,并在应用程序的关键执行环节进行动态可信验证,在检测到其可信性受到破坏后进行报警,并将验证结果形成审计记录送至安全管理中心
1)核查服务器的启动,是否实现可信验证的检测过程,查看对那些系统引导程序、系统程序或重要配置参数进行可信验证
2)修改其中的重要系统程序之一和应用程序之一,核查是否能够检测到并进行报警
3)是否将验证结果形成审计记录送至安全管理中心
服务器具有可信根芯片或硬件
在启动过程中,已基于可信根对系统引导程序、系统程序、重要配置参数和关键应用程序等进行可信验证度量
在检测到可信性受到破坏后能进行报警,并将验证结果形成审计记录送至安全管理中心
安全管理中心可以接受设备的验证结果记录