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 也是 ...
随机推荐
- Code Generate V2.0 代码生成器
Code Generate 代码生成器 系统首页 使用说明 系统默认会根据SQL生成字段信息 className.fieldList.classComment 如下所示: 建表语句 CREATE TA ...
- dash构建多页应用
dash 构建多页面应用一种方案 本方案对dash官网多页面案例使用dash_bootstrap_components案例进行优化与测试,效果如下 项目代码结构如下 │ app.py │ ├─asse ...
- 【Azure API Management】实现在API Management服务中使用MI(管理标识 Managed Identity)访问启用防火墙的Storage Account
问题描述 在Azure的同一数据中心,API Management访问启用了防火墙的Storage Account,并且把APIM的公网IP地址设置在白名单.但访问依旧是403 原因是: 存储帐户部署 ...
- Redis核心技术与实践 01 | 基本架构:一个键值数据库包含什么?
原文地址:https://time.geekbang.org/column/article/268262 个人博客地址:http://njpkhuan.cn/archives/redis-he-xin ...
- EC600U-4G模组,连接阿里云测试服务器和物联网平台
原博主视频:https://www.bilibili.com/video/BV1yT4y1P7Gw?share_source=copy_web 连接阿里云服务器 !!需要公网ip(服务器)才能远程,不 ...
- 今日ERROR
树莓派插卡发烫严重 首先,我们要知道: 树莓派的指示灯可以告诉用户系统的工作状态,常见的指示灯有四个,分别是红色电源灯.绿色SD卡读写灯.黄色ACT指示灯和蓝色网络连接指示灯(仅适用于某些型号的树莓派 ...
- 【Dotnet 工具箱】推荐一个使用 C# 开发的轻量级压测工具
你好,这里是 Dotnet 工具箱,定期分享 Dotnet 有趣,实用的工具和组件,希望对您有用! 轻量级压测工具 LoadTestToolbox 是一个使用 C# 开发的轻量级压测工具,基于 .NE ...
- Django:数据库驱动安装
import pymysql pymysql.install_as_MySQLdb() 常见MySQL驱动介绍: MySQL-python:也就是MySQLdb.是对C语言操作MySQL数据库的一个简 ...
- redis数据持久化之RDB和AOF
前言 redis虽然是内存缓存程序,但是可以将内存中的数据保存到硬盘上,从而实现数据保存.目前有两种redis数据持久化方式,分别是RDB和AOF. RDB模式 RDB之简介 RDB(redis da ...
- 数据结构之B树
1 引言 B-tree,B即Balanced,是自平衡的多叉搜索树,用于组织和存储大量数据,以及数据库和文件系统等需要高效查找和插入操作的应用中. 为什么是"大量数据"?当主存不足 ...