前语

随着云核算厂商的兴起,云资源如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。

Linux账号密码安全策略设置

Linux账号密码安全策略设置

6. 设置SSH闲暇超时退出时刻【建议设置】

设置SSH闲暇超时退出时刻,可下降未授权用户访问其他用户ssh会话的危险

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

ClientAliveInterval 600
ClientAliveCountMax 2

Linux账号密码安全策略设置

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