首页 > 系统相关 >Linux账号密码安全策略设置

Linux账号密码安全策略设置

时间:2023-10-19 12:04:21浏览次数:44  
标签:-- 安全策略 auth 密码 so Linux password pam 账号密码

前言

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

标签:--,安全策略,auth,密码,so,Linux,password,pam,账号密码
From: https://blog.51cto.com/u_16309327/7934123

相关文章

  • Linux I/O schedulers类型简介
    I/Oschedulersattempttoimprovethroughputbyreorderingrequestaccessintoalinearorderbasedonthelogicaladdressesofthedataandtryingtogroupthesetogether.WhilethismayincreaseoverallthroughputitmayleadtosomeI/Orequestswaitin......
  • Linux的Namespace,cgroup,chroot和docker的本质
    Linux的Namespace,cgroup,chroot和docker的本质-陈映峤的博客|LerkoBlog(chenyingqiao.github.io)chroot,即changerootdirectory(更改root目录)。在linux系统中,系统默认的目录结构都是以 /,即是以根(root)开始的。而在使用chroot之后,系统的目录结构将以指定的位......
  • Linux-expect(以交互形式输入命令,实现交互通信)
    1.expect简介expect是一种脚本语言,它能够代替人工实现与终端的交互,主要应用于执行命令和程序时,系统以交互形式要求输入指定字符串,实现交互通信。安装命令:yuminstallexpect; 2.expect使用场景(1)并根据预定标准回答其问题,回答“是”、“否”或将控制权交还给您(2)远程连接设备......
  • Linux-shell脚本使用ssh远程执行命令通过密码的方式登录
    1. sshpass简介sshpass是一个在非交互式ssh会话中自动输入密码的工具。它可以直接在命令行中指定密码,因此可以用于Shell脚本等自动化场景。在RedHat系统中,可以通过epel-release源安装sshpass。epel-release源是ExtraPackagesforEnterpriseLinux(EPEL)的缩写......
  • Linux-Shell 小数运算,四舍五入
    在shell中做小数运算,可以借助bc或者awk工具一、使用bc做小数运算,scale指定小数点位数1、加法运算(scale参数无效)#echo"5.999+5.001"|bc6.000#echo"5.111+5.1114"|bc10.2224运算结果小数点位数以加数中最大的为准 2、减法运算(scale参数无效)  同加法运算  运算......
  • 配置自定义服务为linux系统服务
    背景使用go语言写了一个测试环境部署上报的备份服务,以防因为主服务挂了影响部署操作。 想把这个backup服务设置了系统服务,如果因环境重启等异常,可以自动重启使用的环境的Centos71、首先需要创建一个systemdunit存储配置文件[Unit]Description=deployreportbackupse......
  • linux应急处置
    实战手把手教你,Linux服务器应急处置教学小编 CyberTorres 2023-10-0914:48 发表于广东收录于合集#linux1个#服务器1个#技术分享2个当你负责的服务器被黑了,怎么办?没遭遇过如此大风大浪的运维人员:哦,**!我该怎么办,点根香烟冷静一下。Wait!小编请您先切断网络,再......
  • 你是否还迷茫要不要学习Linux?
    近几年Linux这个词好像很流行,无论是现实工作中,还是在网络信息中均可以听到或者看到有关Linux相关的内容,可以说Linux无处不在。说到这,有人可能会问了,我对Linux比较感兴趣,但是没有接触过Linux,对它不了解,不知道是否适合自己,是否值得我花费时间和经历去深入学习,因此陷入一种比较迷茫的......
  • [ Linux ] 手动放行端口
    https://www.cnblogs.com/yeungchie/在云服务商的网页端操作防火墙会不生效,不清楚原因。可以用下面的命令来手动放行端口。iptables-tnat-IPREROUTING-ptcp--dport$port-mstate--stateNEW-jACCEPTiptables-PFORWARDACCEPT......
  • linux 内核 ---信号量(semaphore)
    信号量使用说明(1)定义信号量structsemaphoresem;(2)初始化信号量voidsema_init(structsemaphore*sem,intval);该函数初始化信号量,并设置信号量sem的值为val。(3)获得信号量externvoiddown(structsemaphore*sem);externint__must_checkdown_interruptible(st......