Linux账号密码安全运维
前言
随着云计算厂商的兴起,云资源如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
Linux账号密码安全运维的更多相关文章
- Linux实战型企业运维工程师试题测评
Linux实战型企业运维工程师试题答案 作者:尹正杰 最近在网上看到了一套有意思的面试题,我们一起来看一下这些题怎么破吧,哈哈~我先放在这里,有时间了一起来看看.多学点东西终究是没有坏处的! ...
- Python Linux系统管理与自动化运维
Python Linux系统管理与自动化运维 前言 第1章Python语言与Linux系统管理1 1.1Python语言有多流行1 1.2Python语言为什么流行3 1.3Python语言有什么缺点 ...
- Linux Shell交互式自动化运维程序
Expect是Linux操作系统下的一个用来处理交互操作,系统默认是没有安装expect库,所以执行expect会提示找不到命令,需要手动安装,其它安装也比较简单,可以通过二进制源码包编译配置进行安装 ...
- Linux操作系统学习(运维必会)
Linux一切皆文件,最高权限的账户root. 1.开机登录 开机会启动很多进程,在Windows上叫"服务"(service),在Linux上叫做"守护进程" ...
- Linux实战型企业运维工程师试题
1.如何通过Linux配置一个局域网或者IDC机房上网网关,请给出步骤及命令?答:上网网关配置(1)开启内核转发:sed -i 's#net.ipv4.ip_forward = 0#net.ipv4. ...
- Linux账号密码过期会导致crontab作业不能执行
今天一同事报告Linux服务器上的crontab作业没有运行,检查/var/log/cron日志后发现下面错误信息 Jan 19 16:30:01 xxxx crond[31399]: Authent ...
- Linux下性能调试工具运维笔记
作为一名资深的linux运维工程师,为方便了解和追求服务器的高性能,如cpu.内存.io.网络等等使用情况,要求运维工程师必须要熟练运用一些必要的系统性能调试工具,liunx下提供了众多命令方便查看各 ...
- linux平台下server运维问题分析与定位
结合我工作中碰到的运维问题,总结一下Linux下server常见的运维问题以及定位方式.这里的server主要指自主开发的逻辑server,web srv因为通常采用通用的架构所以问题比较少. 逻辑s ...
- linux系列之常用运维命令整理笔录
目录 本博客记录工作中需要的linux运维命令,大学时候开始接触linux,会一些基本操作,可是都没有整理起来,加上是做开发,不做运维,有些命令忘记了,所以现在整理成博客,当然vi,文件操作等就不介绍 ...
- Linux命令注释—HDFS运维
HDFS运维—命令注释 1 实验背景 HDFS是大数据其他组件的基础,Hive的数据存储在HDFS中,Mapreduce.Spark 等计算数据也存储在HDFS 中,HBase 的 region 也是 ...
随机推荐
- 检测到 #include 错误。请更新 includePath。已为此翻译单元 禁用波形曲线
也有可能是VSCode抽风了 重启就好
- 在映客的虚拟KTV里唱了一首“爱你”
如果你突然打了个喷嚏 那一定就是我在想你 如果半夜被手机吵醒 啊~那是你的虚拟 KTV 在响起 2022 年 5 月 18 日,映客 App 上线了业内首个元宇宙 K 歌玩法「全景 K 歌」,给用 ...
- DataArts Studio实践丨通过Rest Client 接口读取RESTful接口数据的能力
本文分享自华为云社区<DataArts Studio 通过Rest Client 接口读取RESTful接口数据的能力,通过Hive-SQL存储>,作者: 张浩奇 . Rest Clien ...
- Python 潮流周刊第 13 期(2023-07-29)
查看全文: https://pythoncat.top/posts/2023-07-29-weekly 文章&教程 1.Jupyter Notebook 7 隆重发布 (英) 2.Python ...
- 整理不错的opencv博客
https://me.csdn.net/column/u013095718 更全的博客: https://blog.csdn.net/zhmxy555/column/info/opencv-tutor ...
- 2023牛客暑期多校训练营4 AFHJL
比赛链接 A 题解 知识点:KMP,构造. 考虑构造全 \(0,1\) 串,至少有一个可行. 我们只需要考虑到 \(t\) 的border \(t'\) ,即 \(t'+s+t'\) : 当 \(t' ...
- zanePerfor中一套简单通用的Node前后端Token登录机制和github授权登录方式
HI!,你好,我是zane,zanePerfor是一款我开发的一个前端性能监控平台,现在支持web浏览器端和微信小程序端. 我定义为一款完整,高性能,高可用的前端性能监控系统,这是未来会达到的目的,现 ...
- openssh傻瓜式一键自动化更新脚本(ubuntu系统)
鉴于openssh升级太过麻烦,这里自制了一个openssh自动化升级脚本,以root权限一键运行脚本即可: sh openssh-update.sh 注意:这里只使用于ubuntu系统,centos ...
- CF1787E The Harmonization of XOR 题解
CF1787E The Harmonization of XOR 题目大意 给定 \(n\) 个数 \([1, 2, 3, \cdots, n]\) 和两个正整数 \(k\) 和 \(x\). 将这些 ...
- Redis从入门到放弃(11):雪崩、击穿、穿透
1.前言 Redis作为一款高性能的缓存数据库,为许多应用提供了快速的数据访问和存储能力.然而,在使用Redis时,我们不可避免地会面对一些常见的问题,如缓存雪崩.缓存穿透和缓存击穿.本文将深入探讨这 ...