首页 > 系统相关 >Linux账号密码安全运维

Linux账号密码安全运维

时间:2023-04-25 16:59:06浏览次数:34  
标签:运维 etc 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命令进行设置。

标签:运维,etc,auth,密码,so,Linux,password,pam,账号密码
From: https://www.cnblogs.com/wlovet/p/17353126.html

相关文章

  • centos linux系统安装详解
    打开vmware,版本差异区别不大选择创建新的虚拟机  选择典型,是默认选项不用改,点击下一步 选择稍后安装操作系统(默认选项不用改),点击下一步 选择linux,并且版本改为centos64位,点击下一步 虚拟机名称随便改,位置是指虚拟机的位置,点击浏览,自己选择位置,点击下一步 最大......
  • 修改Linux IP
    ipas//查看ip地址信息cat/etc/sysconfig/network-scripts/ifcfg-网卡名称//查看网络配置信息vi(或者vim)/etc/sysconfig/network-scripts/ifcfg-网卡名称//修改配置信息Esc:wq退出TYPE="Ethernet"//网络类型以太网常见的有Ethernet、BridgePROXY_METHOD="none"......
  • Linux性能优化篇-了解CPU上下文切换
     我们了解到导致平均负载,有可能是以下几种方面:CPU密集型(造成cpu利用率升高,可以理解)I/O密集型(io和cpu互斥的,也造成cpu利用率增高-不可中断进程的)大量进程(???)根据平均负载的解释,单位时间内的处于可运行的进程和不可中断进程的进程数,Systemloadaveragesistheaveragenumberofproc......
  • linux之dlopen、dlsym和dlclose使用和举例
     之前用过这三个函数一直没时间整理一下。今天抽时间整理一下。1、函数简介dlopen基本定义功能:打开一个动态链接库 包含头文件: #include<dlfcn.h> 函数定义: void*dlopen(constchar*pathname,intmode); 函数描述: 在dlopen的()函数以指......
  • linux中修改文件常用vim命令
    linux中修改文件常用vim命令个人博客地址:https://note.raokun.top拥抱ChatGPT,国内访问网站:https://www.playchat.top按键作用含义i在当前字符前插入(记忆:insert)I在光标所在行的行首插入a在当前字符后插入(记忆:afterinsert)A在光标所在行的行尾插入......
  • RHEL8常用命令-Linux就该这么学2
       首先介绍系统内核和Shell终端的关系与作用,然后介绍Bash解释器的4大优势并学习Linux命令的执行方法。经验丰富的运维人员能够通过合理地组合命令,来更精准地满足工作需求,还可以尽可能地降低系统资源消耗。   本章选出常用的数十个Linux命令,它们与系统工作......
  • 运维工单系统有哪些功能?
    一般的运维工单系统如果不涉及到硬件设备上门维护的情景,一般工单的发布、回复、处理、跨部门协作、进度通知等这些工单基础功能就可以满足。如果企业的运维工作有涉及硬件设备上门维护的需求,则需要确认选择的运维工单系统是否具备以下功能。1.客户发布工单企业在有硬件设备维护的......
  • Linux解压RAR文件
    首先说明1、linux中常常会遇到一些rar结尾的文件包,靠linux本身的命令是无法实现解压rar结尾的文件夹的,需要安装rar的压缩软件才可以。2、要将服务器的账号切换为root账户,否则安装会出错。1、下载linux版本的rar软件访问RARLAB官网下载最新的、适用于自己的linux版本的rar软件......
  • 运维工单系统有哪些功能?
    一般的运维工单系统如果不涉及到硬件设备上门维护的情景,一般工单的发布、回复、处理、跨部门协作、进度通知等这些工单基础功能就可以满足。如果企业的运维工作有涉及硬件设备上门维护的需求,则需要确认选择的运维工单系统是否具备以下功能。1.客户发布工单企业在有硬件设备维护......
  • Linux VFS中write系统调用实现原理
    目录用户空间的write函数在内核里面的服务例程为sys_write.1Vfs_write函数实现原理...2 WORD里面的目录复制过来似乎不能直接用。。还是放在这里当主线看吧..用户空间的write函数在内核里面的服务例程为sys_writeroot@syslab~]#grepwrite/usr/include/asm/unistd......