本文以等保三级(S3A3)要求,CentOS 7.6 64位系统为例进行演示。
一、身份鉴别
a)应对登录的用户进行身份标识和鉴别,身份标识具有唯一性,身份鉴别信息具有复杂度要求并定期更换;
该项需检查登录是否需用账号密码,当前密码是否在8位以上并包含字母、数字、特殊字符。
输入命令查看是否存在空口令,shadow文件第二个字段为加密后的口令,如下图标记所示,为空则为空口令(*或者!!表示用户被锁定):
more /etc/shadow
输入命令查看密码长度和定期更换设置:
cat /etc/login.defs
PASS_MAX_DAYS 99999 :登录密码有效期为99999天
PASS_MIN_DAYS 0 : 登录密码最短使用时间,增加可以防止非法用户短期更改多次
PASS_MIN_LEN 8 : 登录密码最短长度为8位,如果使用pam_cracklib module,那么该参数将不再有效
PASS_WARN_AGE 7 :登录密码过期提前7天提示修改
输入命令查看密码复杂度配置:
cat /etc/pam.d/system-auth
minlen=8 : 新密码最短为八位,由上条可知,以此处密码位数为准
dcredit=-2 : 新密码中最少包含两个数字
ucredit=-1 : 新密码中最少包含一个大写字母
lcredit=-1 : 新密码中最少包含一个小写字母
ocredit=-1 : 新密码中最少包含一个特殊字符
b) 应具有登录失败处理功能,应配置并启用结束会话、限制非法登录次数和当登录连接超时自动退出等相关措施;
输入以下命令看登录失败处理功能是否开启:
cat /etc/pam.d/system-auth
onerr=fail 表示定义了当出现错误时的缺省返回值;
even_deny_root 表示也限制root用户;
deny 表示设置普通用户和root用户连续错误登陆的最大次数,超过最大次数,则锁定该用户;
unlock_time 表示设定普通用户锁定后,多少时间后解锁,单位是秒;
root_unlock_time 表示设定root用户锁定后,多少时间后解锁,单位是秒;
输入以下命令检查超时自动退出功能:
cat /etc/profile
c) 当进行远程管理时,应采取必要措施防止鉴别信息在网络传输过程中被窃听;
若操作系统只在本地管理或通过KVM等硬件方式管理则该项符合。在远程管理时如通过堡垒机采用SSH、HTTPS协议进行远程管理则满足本测评项要求。检查系统自身的网络登录方式,是否使用了安全的SSH协议,禁用了明文传输的Telnet协议:
1)查看SSH服务是否开启
ps -e | grep sshd
2)查看SSH服务对应的端口是否打开
netstat -an|grep 22
3)查看Telnet服务状态
systemctl status telnet.socket
d) 应采用口令、密码技术、生物技术等两种或两种以上组合的鉴别技术对用户进行身份鉴别,且其中一种鉴别技术至少应使用密码技术来实现。
Linux操作系统目前仅有“用户名+口令”一种鉴别方式,目前常见的有通过数字证书Ukey来实现双因子认证。或借助于堡垒机来进行多重认证,降低安全风险。
二、访问控制
a) 应对登录的用户分配账户和权限;
检查重要文件和目录权限设置是否合理,Linux系统对文件的操作权限包括四种:读(r,4);写(w,2);执行(x,1);空(-,0),文件的权限分为属主(拥有者)、属组、其它用户和用户组的权限。配置文件权限值不能大于644,对于可执行文件不能大于755。
ls -l 文件名
b) 应重命名或删除默认账户,修改默认账户的默认口令;
输入命令查看是否存在adm、 lp. sync、 shutdown、 halt.、mail、 uucp、operator,、games.、gopher ftp等默认的、无用的用户:
more /etc/shadow
root作为Linux系统的重要默认用户,一般要求禁止远程登录,检查命令如下:
more /etc/ssh/sshd_config
当上图参数为“no”时符合要求。
c) 应及时删除或停用多余的、过期的账户,避免共享账户的存在;
根据上一项的检查结果,并与配合人员访谈各在用账户的使用情况。默认账户games、news、 ftp、 1p等应被被禁用,特权账号halt、shutdown应被删除。
d) 应授予管理用户所需的最小权限,实现管理用户的权限分离;
在实际生产中,Linux系统很难完全满足该项要求,因为超级管理员用户root一旦被禁用会影响系统和应用的正常使用。但仍应严格限制具有root级权限的账户,其他用户仅应通过使用sudo被赋予root级权限。通过以下命令核查root级权限都授予哪些账户:
cat /etc/sudo.conf
e) 应由授权主体配置访问控制策略,访问控制策略规定主体对客体的访问规则;
对于Linux主机,是由系统管理员通过root账户为其它账户分配权限,所以该项主要检查权限分配是否合理,访问控制策略配置是否符合安全要求。
f) 访问控制的粒度应达到主体为用户级或进程级,客体为文件、数据库表级;
Linux系统已经对一些默认账户和系统文件分配了不同的权限,也就是说主体已经达到了用户级,客体已经达到了文件级,该项主要检查新建用户和文件是否存在权限过大、权限滥用的情况。
Linux操作系统默认关闭SELinux服务,开启后会影响系统和业务应用的正常使用。也可通过对操作系统内核进行二次开发或使用加固软件来实现强制访问控制,但目前阶段在实际测评中基本没遇到符合的情况。
more /etc/selinux/config
三、安全审计
a) 应启用安全审计功能,审计覆盖到每个用户,对重要的用户行为和重要安全事件进行审计;
输入查看系统日志服务命令看到系统日志默认未开启:
service syslog status
查看审计服务状态看到审计服务默认已开启:
service auditd status
b) 审计记录应包括事件的日期和时间、用户、事件类型、事件是否成功及其他与审计相关的信息;
输入以下命令查看日志信息是否足够详细:
cat /etc/rsyslog.conf
输入以下命令查看到audit默认运行状态已启用:
auditctl -s
输入以下命令查看到audit默认运行规则未配置:
auditctl -l
c) 应对审计记录进行保护,定期备份,避免受到未预期的删除、修改或覆盖等;
检查审计记录保存的目录,验证是否能被普通用户轻易删除,访谈管理员对审计记录的保护措施和备份策略,检查审计记录是否备份不少于六个月。
d) 应对审计进程进行保护,防止未经授权的中断。
测试使用非审计管理员中断审计进程,是否能成功,询问和检查是否安装第三方审计进程保护软件。
四、入侵防范
a) 应遵循最小安装的原则,仅安装需要的组件和应用程序;
查看系统当前版本,是否及时安装安全补丁:
uname -a
查看操作系统中已安装的程序包,检查是否有目前不需要的组件和应用程序:
yum list installed
b) 应关闭不需要的系统服务、默认共享和高危端口;
输入以下命令检查系统当前运行的服务:
systemctl list-unit-files | grep enable
输入以下命令检查系统当前开启的端口:
netstat -ntlp
Linux系统自身不存在默认共享,创建共享文件夹需安装samba,输入以下命令检查是否已经安装samba:
rpm -qi samba
c) 应通过设定终端接入方式或网络地址范围对通过网络进行管理的管理终端进行限制;
Linux系统中/etc/hosts.allow控制可以访问本机的IP地址,/ete/hosts.deny控制禁止访问本机的IP。实际测评中基本都像下图未在此处进行配置,多在防火墙或堡垒机上进行限制。
cat /etc/hosts.allow
cat /etc/hosts.deny
d) 应提供数据有效性检验功能,保证通过人机接口输入或通过通信接口输入的内容符合系统设定要求;
此项主要针对应用系统,主机不涉及人机接口输入或通信接口输入控制,该项不适用。
e) 应能发现可能存在的已知漏洞,并在经过充分测试评估后,及时修补漏洞;
该项需结合漏扫,初测是否发现高风险漏洞,复测后高风险漏洞是否被修补。输入以下命令查看补丁更新情况,是否及时安装最新补丁:
rpm -qa grep patch
f) 应能够检测到对重要节点进行入侵的行为,并在发生严重入侵事件时提供报警。
检查操作系统是否安装入侵检测软件,如:Dragon Squire by Enterasys Networks ,ITA by Symantec等。查看网络拓补图,在网络层面是否部署有入侵检测系统(IDS浅析)。
五、恶意代码防范
应采用免受恶意代码攻击的技术措施或主动免疫可信验证机制及时识别入侵和病毒行为,并将其有效阻断。
市面上针对Linux操作系统的杀毒软件较少,实际测评过程中基本未遇到安装杀毒软件的Linux主机,不过由于Linux系统自身安全性较高,该项不符合也不判定为高风险问题。
六、可信验证
可基于可信根对计算设备的系统引导程序、 系统程序、重要配置参数和应用程序等进行可信验证,并在应用程序的关键执行环节进行动态可信验证,在检测到其可信性受到破坏后进行报警,并将验证结果形成审计记录送至安全管理中心。
该项目前尚未遇到符合的情况,因为需在硬件层面用到可信根芯片或硬件,可通过修改应用程序来测试系统是否进行可信验证。可信理念目前尚未成熟地落地于实际生产生活,所以对该项的要求是做了加分,没做不扣分。
七、数据备份恢复
检查拓补图和资产表,涉及重要数据处理的主机是否有热备机器或集群。
八、剩余信息保护
a) 应保证鉴别信息所在的存储空间被释放或重新分配前得到完全清除;
CentOS系统该项默认符合。
b) 应保证存有敏感数据的存储空间被释放或重新分配前得到完全清除。
CentOS系统该项默认符合。
本文重点演示Linux主机测评中需核查的配置项,像“个人信息保护”这种明显不适用于主机层面的项文中并未列出,“数据完整性和保密性”需对各项数据进行核验检查和查看配置文档,特别需要指出的是MD5算法可作为校验算法来保证完整性,但作为加密算法使用却不能保证保密性,类似不安全的加密算法还有DES、SHA-1、RSA(不足2048比特)。