前言

随着云计算厂商的兴起,云资源如ECS不再只有企业或者公司才会使用,普通人也可以自己买一台ECS来搭建自己的应用或者网站。虽然云计算厂商帮我们做了很多安全相关的工作,但并不代表我们的机器资源就绝对是安全的。

要知道有很多事情是云计算厂商不能为我们做的,就比如账号密码的安全策略配置,而账号密码的安全又是Linux安全中的第一道安全锁,我们必须重视起来。

比如一个具有公网IP的服务器,我们可以使用Linux连接工具或者ssh在本地进行连接,如果密码太简单并且没有错误次数限制,我们完全可以暴力破解出来,这属于【高危】漏洞。

账号密码策略

查看当前用户的账号密码策略

-- 输入指令

chage -l root

-- 返回结果

Last password change : Jun 14, 2022

Password expires : never

Password inactive : never

Account expires : never

Minimum number of days between password change : 0

Maximum number of days between password change : 99999

Number of days of warning before password expires : 7

-- 翻译过来:

最近一次密码修改时间 : 6月 14, 2022

密码过期时间 :从不过期

密码失效时间 :从不

帐户过期时间 :从不

两次改变密码之间相距的最小天数 :任何时候都可以改

两次改变密码之间相距的最大天数 :永远不需要改

在密码过期之前警告的天数 :7

这种账号肯定是有风险的,尤其还是root账户,一旦被破解,那这台Linux服务器基本上凉凉。

1. 设置密码失效时间【一定要设置】

设置密码失效时间,强制定期修改密码,减少密码被泄漏和猜测风险,使用非密码登陆方式(如密钥对)请忽略此项。

在 /etc/login.defs 中将 PASS_MAX_DAYS 参数设置为 60-180之间,如:

--两次改变密码之间相距的最大天数,密码有效最大天数

PASS_MAX_DAYS 90

注意:以上只对之后新增的用户有效,如果要修改已存在的用户密码规则,需要使用chage命令

2. 设置密码修改最小间隔时间【一定要设置】

设置密码修改最小间隔时间,限制密码更改过于频繁

在 /etc/login.defs 中将 PASS_MIN_DAYS 参数设置为7-14之间,建议为7:

--两次改变密码之间相距的最小天数,为零时代表任何时候都可以更改密码

PASS_MIN_DAYS 7

注意:以上只对之后新增的用户有效,如果要修改已存在的用户密码规则,需要使用chage命令

3. 在到期前设置警告的天数【建议设置】

设备警告的天数,可以让我们备份旧密码、准备新密码

在 /etc/login.defs 中将 PASS_WARN_AGE 参数设置为7天

PASS_WARN_AGE 7

注意:以上只对之后新增的用户有效,如果要修改已存在的用户密码规则,需要使用chage命令

4. 设置密码复杂度【一定要设置】

简单的密码安全性很差,一般建议密码长度大于8,包括大小写字母、数字、特殊字符等

在 /etc/pam.d/common-password 添加如下内容(如果没有该文件自己创建一个):

# /etc/pam.d/common-password - password-related modules common to all services

password requisite pam_cracklib.so retry=3 minlen=8 ucredit=-1 lcredit=-1 dcredit=-1 ocredit=-1

password [success=1 default=ignore] pam_unix.so sha512

password requisite pam_deny.so

password required pam_permit.so

“minlen=8”表示密码长度至少为8个字符。“ucredit=-1”表示密码中至少包含一个大写字母。“lcredit=-1”表示密码中至少包含一个小写字母。“dcredit=-1”表示密码中至少包含一个数字。“ocredit=-1”表示密码中至少包含一个特殊字符。

注意:以上只对之后新增的用户有效,如果要修改已存在的用户密码规则,需要使用chage命令

5. 检查密码重用是否受限制【一定要设置】

强制用户不重用最近使用的密码,降低密码猜测攻击风险

在/etc/pam.d/password-auth和/etc/pam.d/system-auth中password sufficient pam_unix.so 这行的末尾配置remember参数为5-24之间,原来的内容不用更改,只在末尾加了remember=5。

6. 设置SSH空闲超时退出时间【建议设置】

设置SSH空闲超时退出时间,可降低未授权用户访问其他用户ssh会话的风险

编辑/etc/ssh/sshd_config,将ClientAliveInterval 设置为300到900,即5-15分钟,将ClientAliveCountMax设置为0-3之间。

ClientAliveInterval 600

ClientAliveCountMax 2

7. 账户锁定策略【一定要设置】

策略要求:

设定锁定的阈值为5次锁定时间为5分钟即300秒必须所有用户都受限,包括root

修改配置文件/etc/pam.d/system-auth-ac和/etc/pam.d/password-auth-ac

/etc/pam.d/system-auth-ac文件替换如下:

auth required pam_env.so

auth required pam_tally2.so even_deny_root deny=5 unlock_time=60

auth sufficient pam_unix.so nullok try_first_pass

auth requisite pam_succeed_if.so uid >= 1000 quiet_success

auth required pam_deny.so

account required pam_unix.so

account required pam_tally2.so

account sufficient pam_localuser.so

account sufficient pam_succeed_if.so uid < 1000 quiet

account required pam_permit.so

/etc/pam.d/password-auth-ac文件替换如下:

auth required pam_env.so

auth required pam_tally2.so deny=5 unlock_time=60

auth sufficient pam_unix.so nullok try_first_pass

auth requisite pam_succeed_if.so uid >= 1000 quiet_success

auth required pam_deny.so

account required pam_unix.so

account required pam_tally2.so

account sufficient pam_localuser.so

account sufficient pam_succeed_if.so uid < 1000 quiet

account required pam_permit.so

查看用户锁定状态

-- 输入命令

pam_tally2 -u root

-- 输出结果

Login Failures Latest failure From

root 0

解锁状态

-- 输入命令

pam_tally2 -r -u root

-- 输出结果

Login Failures Latest failure From

root 0

温馨提示:login.defs文件和/etc/pam.d/system-auth文件的规则设置对非root用户起作用,在root用户下则不会生效!如果设置root用户密码过期时间等,需要用chage命令进行设置。 chage命令使用示例:

基本格式:chage [选项] 账户名

-- 查看系统账户的当前设置

chage -l username

-- 设置用户设置密码失效时间

chage --maxdays 90 username

-- 设置用户密码修改最小间隔时间

chage --mindays 7 username

相关链接

评论可见,请评论后查看内容,谢谢!!!
 您阅读本篇文章共花了: