本文以等保2.0为标准,三级等保要求,centos7.6.1810系统为例进行演示。
关于加密
/etc/shadow文件格式和/etc/passwd类似,由若干字段组成,字段之间用“:”隔开
登录名:加密口令:最后一次修改时间:最小时间间隔:最大时间间隔:警告时间:不活动时间:失效时间:标志
ice:$6$5NAhdLZN$PSiSm7IMPVsB6kCoFFVcI5JSPYqzM.c139wesTl/YGl6Z0MqTaTVmbTbWlJQkX11Uvr.sKTT46uO9QYDun87..:18000:0:99999:7:::
1) “登录名”是与/etc/passwd文件中的登录名相一致的用户账号,这个字段是非空的
2) “口令”字段存放的是加密后的用户口令字,如果为空,则对应用户没有口令,登录时不需要口令; CentOS7以上都是采取的SHA256加密算法进行加密。如果是有些用户在这段是x,*,!!,表示这个用户不能登录到系统或者是没用密码不能登录;这个字段是非空的;
星号代表帐号被锁定,将无法登录;双叹号表示这个密码已经过期了, 如果是$x$xxxxxxxx$的形式,则代表密码正常。
$6$开头的,表明是用SHA-512加密的,密文长度86,示例中‘5NAhdLZN’为salt值,是一个随机字符串,供加密使用
$1$ 表明是用MD5加密的,密文长度22个字符
$2$ 是用Blowfish加密的,
$5$ 是用 SHA-256加密的,密文长度43
3) “最后一次修改时间”表示的是从UNIX的诞生日1970-1-1,到今天修改口令时的天数。通过passwd来修改用户的密码,然后查看/etc/shadow中此字段的变化;
4) “最小时间间隔”指的是两次修改口令之间所需的最小天数。如果设置为0,则禁用此功能;也就是说用户必须经过多少天才能修改其口令;默认值是通过/etc/login.defs文件定义中获取,PASS_MIN_DAYS中有定义;
5) “最大时间间隔”指的是口令保持有效的最大天数。这个能增强管理员管理用户口令的时效性,应该说在增强了系统的安全性;如果是系统默认值,是在添加用户时由/etc/login.defs文件定义中获取,在PASS_MAX_DAYS中定义;
6) “警告时间”字段表示的是从系统开始警告用户到用户密码正式失效之间的天数。当用户登录系统后,系统登录程序提醒用户口令将要作废;如果是系统默认值,是在添加用户时由/etc/login.defs文件定义中获取,在PASS_WARN_AGE中定义;
7) “不活动时间”表示的是用户没有登录活动但账号仍能保持有效的最大天数。在口令过期之后多少天禁用此用户;此字段表示用户口令作废多少天后,系统会禁用此用户,也就是说系统会不能再让此用户登录,也不会提示用户过期,是完全禁用;
8) “失效时间”字段给出的是一个绝对的天数,如果使用了这个字段,那么就给出相应账号的生存期。期满后,该账号就不再是一个合法的账号(从1970年的1月1日开始的天数),如果这个字段的值为空,帐号永久可用;
查看ip
查看ip ifconfig
查看Ubuntu操作系统ip ip addr show
查看Unix/Sun Solaris的ip ifconfig -a
关于版本
查看内核版本 uname -a
查看内核版本 cat /proc/version
查看centos版本 cat /etc/centos-release
查看发行版本 cat /etc/*-release
查看发行版本 cat /etc/issue (可以直接看到具体的版本号,适用于redhat、centos系统)
查看发行版本 lsb_release -a (命令适用于所有的linux,包括Redhat、SuSE、Debian等)
查看发行版本 cat /etc/redhat-release 红帽
一、身份鉴别
a)应对登录的用户进行身份标识和鉴别,身份标识具有唯一性,身份鉴别信息具有复
杂度要求并定期更换;
该项需检查登录是否需用账号密码,当前密码是否在8位以上并包含字母、数字、特殊字符。
输入命令查看是否存在空口令,shadow文件第二个字段为加密后的口令,如下图标记所示,为空则为空口令(*或者!!表示用户被锁定):
more /etc/shadow
测评方法:
1.应核查用户在登陆时是否采用了身份鉴别措施
用户登录服务器需要使用账户+账户口令。
2.应核查用户列表确认用户身份标识是否具有唯一性;
(more /etc/passwd) //查看命令结果,第三字段不存在相同数字、用户名不存在相同名称。
Linux以用户UID做为身份唯一标识,Linux默认符合;
3.应核查用户配置信息或测试验证是否不存在空口令用户;
(more /etc/shadow) //查看命令结果,红框内的乱码表示加密以后的账户口令 //红色框内的(!*)号代表该账户已锁定、或者禁用。
root账号口令已加密
4.应核查用户鉴别信息是否具有复杂度要求并定期更换
(more /etc/login.defs)
// 查看命令结果是否有设置密码长度,复杂度。
1)PASS_MAX_DAYS=90(密码登录有效期时间)
2)PASS_MIN_DAYS=0(密码最短修改时间)
3)PASS_MIN_LEN=8(密码最小长度)
4)PASS_WARN_AGE=7(密码过期前提前多少天提醒)
4.1服务器密码复杂的策略(默认未配置)
(more/etc/pam.d/system-auth)
//password requisite 里面设置密码相关的策略(pam _cracklib.so策略里)
retry=5(尝试登录次数)
authtok_type= difok=3(新密码与旧密码有多少位能一样)
minlen=8(密码长度)
ucreddir=-1 (最少包含一个大写字母)
lcredit=-3 (最少有三个小写字母)
dcredit=-3 (最少有三个数字)
b)应具有登录失败处理功能,应配置并启用结束会话、限制非法登录次数和当登录连接超时自动退出等相关措施;
1、应核查是否配置并启用了登录失败处理功能;
cat /etc/pam.d/system-auth,核查文件中的pam_tally2.so模块信息。默认未开启
或者more /etc/pam.d/login
onerr=fail 表示定义了当出现错误时的缺省返回值;
even_deny_root 表示也限制root用户;
deny 表示设置普通用户和root用户连续错误登陆的最大次数,超过最大次数,则锁定该用户;
unlock_time 表示设定普通用户锁定后,多少时间后解锁,单位是秒;
root_unlock_time 表示设定root用户锁定后,多少时间后解锁,单位是秒;
2.输入以下命令检查超时自动退出功能:
cat /etc/profile ,查看是否存在timeout
3.使用SSH远程登录的失败处理:(more /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
c)当进行远程管理时,应采取必要措施防止鉴别信息在网络传输过程中被窃听;
若操作系统只在本地管理或通过KVM等硬件方式管理则该项符合。在远程管理时如通过堡垒机采用SSH、HTTPS协议进行远程管理则满足本测评项要求。检查系统自身的网络登录方式,是否使用了安全的SSH协议,禁用了明文传输的Telnet协议:
1、是否运行SSHD服务。一般是默认开启的
1、是否运行SSHD服务
(systemctl status sshd.service)
或者
(service --status-all |grep sshd)
//检查命令结果显示为:
sshd.service - OpenSSH server daemon
Loaded: loaded (/usr/lib/systemd/system/sshd.service; enabled)
Active: active (running) since 三 2021-07-14 15:56:20 CST; 43min ago
Main PID: 1414 (sshd)
//running 绿色表示正在运行
2、是否打开SSHD服务对应端口22端口
(netstat -an |grep 22)
//查看22端口是否正在被SSHD监听
3、是否打开了Telnet服务
(systemctl list-unit-files |grep telnet)
systemctl status telnet.socket
//查看命令结果是否存在telen服务(应为不存在)
4、是否打开了Telnet服务的对应端口23端口
(netstat -an |grep 23)
//查看23端口是否正在被Telnet监听(应为不存在)
d)应采用口令、密码技术、生物技术等两种或两种以上组合的鉴别技术对用户进行身份鉴别, 且其中一种鉴别技术至少应使用密码技术来实现。
1、应核查是否采用动态口令、数字证书、生物技术和设备指纹等两种或两种以上组合的鉴别技术对用户身份进行鉴别。
2、应核查其中一种鉴别技术是否使用密码技术来实现。
//询问管理员,除了输入密码登录还有什么方式能够进行身份鉴别,这个方法有没有采用密码技术。
Linux操作系统目前仅有“用户名+口令”一种鉴别方式,一般是不符合的,目前常见的有通过数字证书Ukey来实现双因子认证。或借助于堡垒机来进行多重认证,降低安全风险。
二、访问控制
a)应对登陆的用户分配账号和权限
1、应核查是否为用户分配了账户和权限及相关设置情况;
(umask)
//查看服务器的umask=0027
2、应核查是否已禁用或限制匿名、默认账户的访问权限;
(more /etc/shadow)
//查看命令返回结果 第二字段为(!*)表示该账户已锁定
//uucp、nuucp、lp、adm、shutdown均为默认账户
3、查看文件的权限合理性;
(ls -l /etc/passwd)
(ls -l /etc/shadow)
(ls -l /etc/profile)
(ls -l /etc/inet.conf)
(ls -l /etc/rc3.d)
//(开头D为目录、L为链接、B设备文件)
//配置文件不大于644、可执行文件不大于755(r读、w写、x执行)
b) 应重命名或删除默认账户,修改默认账户的默认口令;
(more /etc/shadow)
//查看命令结果,是否存在adm、lp、sync、shutdown、halt、mail、uucp、
operator、games、gopher、ftp等默认无用账户。
一般请款下都是未更改的