当前位置: 首页 > news >正文

运维知识:Linux 密码策略:配置、注意事项与实战详解

Linux 密码策略:配置、注意事项与实战详解

一、为什么需要密码策略?

Linux 密码策略用于强制用户设置安全的密码,防止弱密码(如 123456password)被暴力破解,提升系统安全性。
核心目标:平衡安全性与用户体验,避免密码过于复杂导致用户记录或重复使用弱密码。

二、密码策略的配置文件

Linux 密码策略主要通过以下两个文件配置:

1. /etc/login.defs(全局策略)

  • 作用:定义密码有效期、最小长度、历史记录等。
  • 常用参数
    PASS_MAX_DAYS   90   # 密码最大有效期(天)
    PASS_MIN_DAYS   7    # 密码最小修改间隔(天)
    PASS_MIN_LEN    8    # 密码最小长度(受 pam_pwquality 影响)
    PASS_WARN_AGE   14   # 过期前警告天数
    

2. /etc/pam.d/password-auth(PAM 模块策略)

  • 作用:通过 pam_pwquality 模块定义密码复杂度(大小写、数字、特殊字符等)。
  • 典型配置
    password    requisite     pam_pwquality.so \
      try_first_pass \
      local_users_only \
      retry=3 \
      authtok_type= \
      minlen=12 \          # 最小长度
      minclass=4 \         # 至少 4 类字符(大写、小写、数字、特殊字符)
      ucredit=-1 \         # 至少 1 个大写字母(-1 表示必须存在)
      lcredit=-1 \         # 至少 1 个小写字母
      dcredit=-1 \         # 至少 1 个数字
      ocredit=-1 \         # 至少 1 个特殊字符
      reject_username      # 禁止密码包含用户名
    

三、密码策略配置步骤

步骤 1:修改 /etc/login.defs

sudo vi /etc/login.defs

示例配置

PASS_MAX_DAYS   60   # 2 个月过期
PASS_MIN_DAYS   2    # 至少间隔 2 天才能修改
PASS_MIN_LEN    10   # 最小长度(实际由 pam_pwquality 决定)
PASS_WARN_AGE   7    # 过期前 7 天警告

步骤 2:配置 /etc/pam.d/password-auth

sudo vi /etc/pam.d/password-auth

添加/修改以下行(以 RedHat/CentOS 为例):

password    requisite     pam_pwquality.so \
    minlen=12 \          # 最小长度 12
    minclass=3 \         # 至少 3 类字符
    ucredit=-1 \         # 必须包含大写
    lcredit=-1 \         # 必须包含小写
    dcredit=-1 \         # 必须包含数字
    ocredit=-1 \         # 必须包含特殊字符(!@#$%^&*()等)
    maxrepeat=3 \        # 禁止连续 3 个相同字符
    difok=4 \            # 新密码与旧密码至少 4 位不同
    reject_username      # 密码不能包含用户名

步骤 3:验证密码策略

使用 pwquality 命令测试密码强度:

echo "Password123!" | pwquality --test

输出示例

Password123! (user: root)
密码:太短(至少 12 个字符)

四、注意事项

1. 密码复杂度的平衡

  • 过严:用户可能记录密码或使用 Password123!Password123! 等重复模式。
  • 过松:弱密码易被破解。
    建议minlen=12 + minclass=3 + 禁止用户名。

2. 密码历史记录

通过 pam_pwhistory 模块禁止重复使用旧密码:

# /etc/pam.d/password-auth
password    required    pam_pwhistory.so remember=5  # 记住 5 个旧密码

3. 锁定策略

配置失败尝试锁定(pam_tally2 模块):

# /etc/pam.d/sshd(SSH 登录)
auth        required    pam_tally2.so deny=5 unlock_time=300 even_deny_root
  • 说明:5 次失败后锁定 5 分钟,包括 root 用户。

4. 不同 Linux 发行版的差异

发行版密码策略文件PAM 模块位置
CentOS/RHEL/etc/pam.d/password-auth/usr/lib64/security/
Debian/Ubuntu/etc/pam.d/common-password/usr/lib/x86_64-linux-gnu/security/

五、实战案例

案例 1:强制复杂密码

需求:密码长度 ≥12,包含大小写、数字、特殊字符,60 天过期。
配置

# /etc/login.defs
PASS_MAX_DAYS   60
PASS_MIN_LEN    12  # 仅作参考,实际由 pam_pwquality 控制

# /etc/pam.d/password-auth
pam_pwquality.so minlen=12 minclass=4 ucredit=-1 lcredit=-1 dcredit=-1 ocredit=-1

案例 2:禁止弱密码

需求:密码不能包含 user123 等常见弱词。
配置

pam_pwquality.so badwords=user,123,admin enforce_for_root

六、验证密码策略是否生效

  1. 修改用户密码
    sudo passwd testuser
    
  2. 尝试弱密码(如 test123),系统应拒绝并提示原因。

七、总结

  • 核心文件/etc/login.defs(有效期) + pam_pwquality(复杂度)。
  • 最佳实践:结合密码复杂度、有效期、历史记录和锁定策略。
  • 测试:定期使用 pwquality 或工具(如 john the ripper)测试密码强度。

相关文章:

  • 新手小白 react-useEffect 使用场景
  • Snowflake 算法的实现
  • PHP开发:小区物业管理缴费小程序uniapp在线报修系统、活动报名、在线商城
  • 开源CDN产品-GoEdge
  • 靶场(十七)---小白心得思路分析---Hutch
  • 笔记本+移动端维修全套教程
  • Another Redis Desktop Manager下载安装使用
  • OpenCV三维解算常用方法C++
  • GraalVM原生镜像支持:Spring Cloud应用启动速度提升90%
  • 双指针---《移动零》
  • 基于LabVIEW 的虚拟功率分析仪设计(自动化院仪器专业)
  • mac命令行快捷键
  • HarmonyOS:基于axios实现文件的下载以及下载进度的监听
  • Android14 原生PackageInstaller安装某些apk报错问题
  • 【初探数据结构】快速排序的四种实现方式(Hoare,挖坑,前后指针,非递归)
  • 深入解析 C++20 中的 std::bind_front:高效函数绑定与参数前置
  • Java高频面试之集合-18
  • 基于SSM框架的线上甜品销售系统(源码+lw+部署文档+讲解),源码可白嫖!
  • Java并发编程 什么是分布式锁 跟其他的锁有什么区别 底层原理 实战讲解
  • 加快推进智慧水务发展,实现水务系统安全、高效运行
  • 情侣手表网站/培训心得体会300字
  • python做网站优势/青岛建站seo公司
  • 个人做的卖货网站/软文发稿网站
  • wordpress搭建的网站能干什么/网络推广运营
  • 深圳做网站建设的公司/搜索引擎优化工具有哪些
  • 珠海关键词优化收费/厦门谷歌seo公司