一、身份鉴别
a)应对登录的用户进行身份标识和鉴别,身份标识具有唯一性,身份鉴别信息具有复杂度要求并定期更换。
输入 more /etc/shadow,得知系统所有用户,此语句字段格式有九段。
第一字段:用户名(也被称为登录名),在/etc/shadow中,用户名和/etc/passwd 是相同的,这样就把passwd 和shadow中用的用户记录联系在一起;这个字段是非空的;
第二字段:密码(已被加密,所以看到是一堆乱码,CentOS7以上都是采取的SHA256加密算法进行加密),如果是有些用户在这段是x,*,!!,表示这个用户不能登录到系统或者是没用密码不能登录;这个字段是非空的;
第三字段:上次修改口令的时间;这个时间是从UNIX的诞生日1970年01月01日算起到最近一次修改口令的时间间隔(天数),你可以通过passwd 来修改用户的密码,然后查看/etc/shadow中此字段的变化;
第四字段:两次修改口令间隔最少的天数;如果设置为0,则禁用此功能;也就是说用户必须经过多少天才能修改其口令;默认值是通过/etc/login.defs文件定义中获取,PASS_MIN_DAYS 中有定义;
第五字段:两次修改口令间隔最多的天数;这个能增强管理员管理用户口令的时效性,应该说在增强了系统的安全性;如果是系统默认值,是在添加用户时由/etc/login.defs文件定义中获取,在PASS_MAX_DAYS 中定义;
第六字段:提前多少天警告用户口令将过期;当用户登录系统后,系统登录程序提醒用户口令将要作废;如果是系统默认值,是在添加用户时由/etc/login.defs文件定义中获取,在PASS_WARN_AGE 中定义;
第七字段:在口令过期之后多少天禁用此用户;此字段表示用户口令作废多少天后,系统会禁用此用户,也就是说系统会不能再让此用户登录,也不会提示用户过期,是完全禁用;
第八字段:用户过期日期;此字段指定了用户作废的天数(从1970年的1月1日开始的天数),如果这个字段的值为空,帐号永久可用;
第九字段:保留字段,目前为空,以备将来Linux发展之用;
上图这个例子是CentOS默认的,只有一个root用户需要密码登录,其他都是系统默认用户,基本使用不了。
输入命令查看密码长度和定期更换设置:more /etc/login.defs
得知最长密码使用时间为99999天;最短使用时间为0,代表为设置,就是想换就换;最短密码长度为5天;登录密码过期提前7天提示修改。
查看密码复杂度配置:more /etc/pam.d/system-auth 默认未配置。
b)应具有登录失败处理功能,应配置并启用结束会话、限制非法登录次数和当登录连接超时自动退出等相关措施。
输入more /etc/pam.d/system-auth ,查看是否存在如下语句
onerr=fail 表示定义了当出现错误时的缺省返回值;
even_deny_root 表示也限制root用户;
deny 表示设置普通用户和root用户连续错误登陆的最大次数,超过最大次数,则锁定该用户;
unlock_time 表示设定普通用户锁定后,多少时间后解锁,单位是秒;
root_unlock_time 表示设定root用户锁定后,多少时间后解锁,单位是秒;
默认未开启。
输入以下命令检查超时自动退出功能:more /etc/profile
查看是否存在timeout 语句。
c)当进行远程管理时,应采取必要措施防止鉴别信息在网络传输过程中被窃听;
若操作系统只在本地管理或通过KVM等硬件方式管理则该项符合。在远程管理时如通过堡垒机采用SSH、HTTPS协议进行远程管理则满足本测评项要求。检查系统自身的网络登录方式,是否使用了安全的SSH协议,禁用了明文传输的Telnet协议:
1)查看SSH服务是否开启;登录时也能看出,一般默认开启。
ps -e | grep sshd
2)查看telnet是否开启,默认未开启:
systemctl status telnet.socket
d) 应采用口令、密码技术、生物技术等两种或两种以上组合的鉴别技术对用户进行身份鉴别,且其中一种鉴别技术至少应使用密码技术来实现。
Linux操作系统目前仅有“用户名+口令”一种鉴别方式,一般是不符合的,目前常见的有通过数字证书Ukey来实现双因子认证。或借助于堡垒机来进行多重认证,降低安全风险。