身份鉴别,a)应对登录的用户进行身份标识和鉴别,身份标识具有唯一性,身份鉴别信息具有复杂度要求并定期更换
一、查看是否有空口令用户(应对登录的用户进行身份标识和鉴别,身份标识具有唯一性)
awk -F: '$2 == ""' /etc/shadow
可以看到有一个叫catfish的账号是空口令,违背了需要鉴别的要求,需要设置密码。
至于身份标识有唯一性,Linux系统不允许创建相同的账号,所以我认为是具有唯一性的,默认不用看。
二、设置密码复杂度(身份鉴别信息具有复杂度要求)
cat /etc/pam.d/system-auth
可以看到pam_pwquality.so没有做任何密码复杂度方面的加固。
使用gedit或者vim等工具编辑,在其中添加如下行,删去原来的pam_pwquality.so行:
password requisite pam_pwquality.so minlen=8 lcredit=-1 ucredit=-1 dcredit=-1 ocredit=-1 try_first_pass local_users_only retry=3 enforce_for_root authtok_type=
表示:设置密码长度至少8位,1位小写字母,1位大写字母,1个数字,1个字符的密码,并且对root生效,最多尝试3次。
minlen=8 密码长度至少8位
lcredit=-1 至少1位小写字母
ucredit=-1 至少1位大写字母
dcredit=-1 至少1个数字
ocredit=-1 至少1个字符
retry=3 登录或修改密码,最多尝试3次
enforce_for_root 对root生效,如果没有这个,那么root还是可以给其他账号设置弱密码
authtok_type= 后面加密码提示字符,比如你的姓名?
三、设置密码有效期(身份鉴别信息定期更换)
chage -l root
看到没有设置密码有效期,密码修改时间为99999天。
vim /etc/login.defs #修改有效期为90天,密码长度8位以上
上图: 修改之前
上图:修改之后
b)应具有登录失败处理功能,应配置并启用结束会话、限制非法登录次数和当登录连接超时自动退出等相关措施
一、设置本地密码输错次数后锁定(限制非法登录次数)
Redhat5以后版本使用pam_tally2.so模块控制用户密码认证失败的次数上限,可以实现登录次数、超时时间,解锁时间等。
还是在/etc/pam.d/system-auth中修改,在pam_env.so下面加入
auth required pam_tally2.so onerr=fail deny=10 lock_time=300 even_deny_root root_unlock_time=10
even_deny_root #同时也限制root用户;
deny #超过最大次数,则锁定该用户;
unlock_time #设定普通用户锁定后,多少时间后解锁,单位是秒;
root_unlock_time #设定root用户锁定后,多少时间后解锁,单位是秒;
二、设置SSH远程密码输错次数后锁定(限制非法登录次数)
linux中还有远程登录,需要在etc/pam.d/sshd中修改,加入
auth required pam_tally2.so onerr=fail deny=10 lock_time=300 even_deny_root root_unlock_time=10
三、(登录连接超时自动退出)
添加好后,刷新profile,使其生效。
#source /etc/profile
c)当进行远程管理时,应采取必要措施、防止鉴别信息在网络传输过程中被窃听
Linux提供了远程访问与管理的接口,以方便管理员进行管理操作,网络登录的方式也是多样的,例如可以使用Telnet登录,也可以使用SSH登录。但是,Telnet不安全。I因为其在教据传输过程中,账户与密码均明文传输,这是非常危险的。黑客通过一些网络嗅探工具是能够轻易地的窃取网络中明文传输的账户与密码,因此不建议通过Telnet协议对服务器进行远程管理。针对Telnet协议不安全这种情况,可以在远程登录时使用SSH协议。其原理跟Telnet类似,只是其具有更高的安全性。SSH是一个运行在传输控制层上的应用程序,与Telnet相比,它提供了强大的认证与加密功能,可以保证在远程连接过程中,其传输的数据是加密处理过的。因此保障了账户与口令的安全。
当然,如果没有采用远程管理,使用的是本地管理,那就不适用了。
一、看看是否开启了ssh服务,22端口是否监听(查看是否加密)
service sshd status
netstat -an | grep 22
二、看看是否开启了telnet服务(查看是否有不使用加密的风险)
如果开启了telnet服务(不加密)且端口在监听,一般认为不符合,因为客户端有可能就使用telnet连接linux了,这个是不能保证不用的。
除了看这个之外,还可以使用wireshark抓包,因为可能配置错误导致未加密,抓包是最有说服力的验证方法。
d)应采用口令、密码技术、生物技术等两种或两种以上组合的鉴别技术对用户进行身份鉴别,且其中一种鉴别技术至少应使用密码技术来实现
这块对于linux来说默认是不符合的,因为linux只有账号密码认证功能。但是呢,如果使用堡垒机登录,而堡垒机又有双因素认证,那么就可以认为符合。
Linux可以利用Google Authenticator实现用户双因素认证,感兴趣可以点击参考文章来看看。
1:为什么有的教程说要修改pam_cracklib.so模块?
答:早期用的是pam_cracklib.so模块,CentOS7后来改成用pam_pwquality.so
问题2:为什么有的教程说修改/etc/security/pwquality.conf就行了?
答:/etc/pam.d/system-auth与/etc/security/pwquality.conf,两个文档都可以配置复杂度策略,但system-auth优先级高于pwquality.conf。
问题3:为什么修改了/etc/login.defs,root的有效期还是没变呢?
答:这个配置项对root无效。
参考文章
https://www.cnblogs.com/ye-xin/p/12706296.html 做了pam是否限制root的实验
https://www.cnblogs.com/hanyifeng/p/kevin4real.html
Linux可以利用Google Authenticator实现用户双因素认证
原文始发于微信公众号(透明魔方):等保下基于CentOS7设置身份鉴别策略
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论