在CentOS 7系统中,密码是保障系统安全的第一道,也是最重要的一道防线,无论是本地登录还是远程SSH访问,一个强健且管理得当的密码策略能够有效抵御未经授权的访问和暴力破解,本文将系统性地介绍CentOS 7中密码的日常管理、应急重置、安全策略配置以及更高级的认证方式,旨在为系统管理员提供一份全面、实用的参考指南。
日常密码管理:修改与创建
对于日常运维工作,掌握如何为用户创建和修改密码是基本技能,CentOS 7主要通过passwd
命令来处理这些任务。
修改当前用户密码
普通用户若想修改自己的登录密码,只需在终端中执行以下命令,然后根据提示输入当前密码和新密码即可。
passwd
系统会提示输入“New password”(新密码)和“Retype new password”(再次输入新密码),如果新密码过于简单,系统可能会基于预设的安全策略给出警告,但通常仍允许用户设置。
root用户修改其他用户密码
root用户拥有系统最高权限,可以修改任何用户的密码,而无需知道该用户的旧密码,这在管理员重置用户遗忘密码或为新创建的用户设置初始密码时非常有用。
# 语法:passwd [用户名] passwd username
执行后,系统会直接提示为新用户username
设置新密码,这种方式是创建用户后设置密码的标准流程。
应急处理:忘记root密码的重置方法
忘记root密码是许多管理员都可能遇到的棘手问题,幸运的是,CentOS 7提供了一种通过进入单用户模式来重置root密码的安全方法,操作步骤如下:
- 重启服务器:在系统启动过程中,当看到GRUB引导菜单时,使用键盘方向键高亮显示要启动的CentOS 7内核条目。
- 编辑启动选项:按下键盘上的
e
键,进入编辑模式。 - 修改内核参数:使用方向键找到以
linux16
或linuxefi
开头的那一行,这一行很长,包含了内核路径和启动参数。 - 定位并修改:在该行中,找到
ro
(表示read-only,只读)参数,将其修改为rw
(表示read-write,读写)。 - 添加启动参数:在该行的末尾,空一格,添加
init=/bin/bash
,这个参数的作用是让系统在启动后直接进入一个bash shell环境,而不是正常的系统服务,从而绕过密码验证。 - 启动系统:按下
Ctrl + X
组合键,系统将使用修改后的参数启动,稍等片刻,你将看到一个没有登录提示的命令行提示符,这便是单用户模式。 - 重置密码:在提示符下,直接输入
passwd
命令并回车,然后根据提示输入新的root密码。passwd
- 更新SELinux上下文(关键步骤):由于我们修改了
/etc/shadow
文件,而SELinux可能无法识别这次修改,直接重启可能会导致无法登录,必须执行以下命令来让系统在下次启动时自动重新标记文件系统。touch /.autorelabel
- 重启系统:执行以下命令重启服务器。
exec /sbin/init
系统重启后,你就可以使用新设置的root密码登录了。
安全加固:配置密码策略
默认的密码策略可能过于宽松,为了提升系统安全性,管理员应配置更严格的密码策略,这主要通过修改/etc/login.defs
和/etc/security/pwquality.conf
文件实现。
/etc/login.defs
– 密码有效期策略
此文件用于设置用户密码的时效性参数。
参数 | 描述 | 示例值 |
---|---|---|
PASS_MAX_DAYS | 密码有效期(天) | 90 |
PASS_MIN_DAYS | 密码修改后最短使用时间(天) | 1 |
PASS_MIN_LEN | 密码最小长度 | 8 |
PASS_WARN_AGE | 密码过期前多少天开始警告 | 7 |
/etc/security/pwquality.conf
– 密码复杂度策略
此文件由libpwquality
库提供,用于定义密码的复杂度要求,如必须包含大小写字母、数字、特殊字符等。
参数 | 描述 | 示例值 |
---|---|---|
minlen | 密码最小长度 | 12 |
dcredit | 密码中至少包含的数字数量 | -1 (至少1个) |
ucredit | 密码中至少包含的大写字母数量 | -1 (至少1个) |
lcredit | 密码中至少包含的小写字母数量 | -1 (至少1个) |
ocredit | 密码中至少包含的特殊字符数量 | -1 (至少1个) |
修改这些文件后,新的密码策略将对下次创建用户或修改密码时生效。
超越密码:使用SSH密钥对进行认证
尽管密码管理至关重要,但在现代运维实践中,使用SSH密钥对进行认证是更安全、更便捷的选择,它基于非对称加密,公钥放在服务器上,私钥保留在客户端,实现了免密码登录,并能有效抵御暴力破解,配置过程包括在客户端生成密钥对(ssh-keygen
),然后将公钥上传到服务器的~/.ssh/authorized_keys
文件中(可使用ssh-copy-id
命令简化操作),最后在服务器端修改/etc/ssh/sshd_config
文件,禁用密码认证(PasswordAuthentication no
),从而实现仅允许密钥登录。
相关问答FAQs
问题1:为什么我修改密码时,系统提示“BAD PASSWORD: it is too simplistic”?
解答:这个提示来自于CentOS 7的密码质量检查模块(PAM的pwquality
模块),系统根据/etc/security/pwquality.conf
文件中定义的规则(如最小长度、是否包含数字、大小写字母等)来评估你输入的新密码,当你的新密码不符合这些复杂度要求时,系统就会拒绝并给出类似“BAD PASSWORD”的警告,解决方法是设置一个更复杂的密码,同时包含大小写字母、数字和特殊字符,并达到最小长度要求。
问题2:重置root密码后,为什么无法正常登录,或者SELinux报错?
解答:这通常是因为在单用户模式下修改密码后,没有执行touch /.autorelabel
命令,CentOS 7默认启用SELinux,它对系统文件有严格的安全上下文管理,在单用户模式下直接修改/etc/shadow
文件会破坏其原有的SELinux安全上下文,如果没有创建/.autorelabel
文件,系统重启后SELinux可能无法正确读取/etc/shadow
,导致认证失败,执行touch /.autorelabel
命令会指示系统在下次启动时对整个文件系统进行重新标记,从而恢复正确的SELinux上下文,确保系统可以正常登录。
【版权声明】:本站所有内容均来自网络,若无意侵犯到您的权利,请及时与我们联系将尽快删除相关内容!
发表回复