凌峰创科服务平台

Linux服务器密码如何查看?

在Linux系统中,查看服务器密码需要明确一个核心原则:出于安全考虑,Linux系统不会以明文形式存储用户密码(root或其他用户),而是通过加密算法(如SHA-512)将密码哈希值存储在/etc/shadow文件中,直接“查看”明文密码是不可能的,除非通过特定场景或工具进行破解(需合法授权),以下从合法操作角度,详细说明如何管理密码及相关排查方法。

Linux服务器密码如何查看?-图1
(图片来源网络,侵删)

理解Linux密码存储机制

Linux系统的用户密码信息主要存储在两个文件中:

  1. /etc/passwd:存储用户基本信息(用户名、UID、家目录等),但密码字段(第2列)被x替代,实际密码哈希已移至/etc/shadow
  2. /etc/shadow:存储加密后的密码及密码策略(如过期时间、最小长度等),只有root用户可读取。

/etc/shadow文件中的一行可能如下:
root:$6$abc123$def456ghij789klmno01234567890:18376:0:99999:7:::

  • $6$:表示使用SHA-512加密算法;
  • abc123:盐值(salt),用于增加密码复杂性;
  • def456...:密码哈希值;
  • 18376:上次修改密码的时间(自1970年1月1日以来的天数);
  • 后续字段为密码策略(如最小使用期限、最大使用期限等)。

合法场景下的密码管理操作

重置用户密码(root权限)

若忘记密码且拥有物理访问权限或sudo权限,可通过重置密码恢复访问。
步骤(以CentOS/RHEL为例)

  • 重启服务器,在GRUB启动界面按e进入编辑模式;
  • 找到以linuxlinux16开头的行,在行尾添加rd.break(或init=/bin/bash),按Ctrl+X启动;
  • 系统会中断到switch_root:/#提示符,执行以下命令:
    mount -o remount,rw /sysroot  # 重新挂载根目录为可读写
    chroot /sysroot               # 切换到根环境
    passwd root                   # 重置root密码(输入两次新密码)
    touch /.autorelabel            # (可选)若SELinux启用,需创建此文件以重新标记文件
    exit                          # 退出chroot
    reboot                        # 重启服务器
  • 重启后即可使用新密码登录。

查看密码策略(非明文)

若需了解密码复杂度要求,可查看/etc/login.defs/etc/security/pwquality.conf(或/etc/pam.d/passwd):

Linux服务器密码如何查看?-图2
(图片来源网络,侵删)
  • /etc/login.defs:定义全局密码策略,如最小密码长度(PASS_MIN_LEN)、密码过期时间(PASS_MAX_DAYS)等。
  • /etc/security/pwquality.conf:更详细的密码复杂度规则,如:
    minlen = 8          # 最小长度8位
    minclass = 3        # 至少包含3类字符(大写、小写、数字、特殊符号)
    maxrepeat = 3       # 同一字符连续出现不超过3次

通过日志排查密码相关操作

若怀疑密码被篡改或异常登录,可通过系统日志分析:

  1. 登录日志
    • /var/log/secure(RedHat系)或/var/log/auth.log(Debian/Ubuntu):记录所有登录尝试(成功/失败)、密码修改事件。
    • 示例:查看某用户密码修改记录
      grep "password changed for user" /var/log/secure
  2. 用户登录历史
    • last命令:显示所有用户的登录历史(时间、终端、IP等)。
    • lastb命令:显示失败的登录尝试(可排查暴力破解)。

密码破解工具(仅限授权场景)

若在合法授权下需要恢复密码(如忘记加密后的密码),可使用以下工具:
| 工具名 | 特点 | 适用场景 |
|--------------|----------------------------------------------------------------------|------------------------------|
| John the Ripper | 支持多种加密算法(SHA-512、MD5等),可自定义字典、规则破解 | 单机密码哈希破解 |
| Hashcat | GPU加速破解,速度更快,支持分布式破解 | 大量哈希值批量破解 |
| Ophcrack | 通过彩虹表(预计算的哈希值-明文映射)破解,适用于Windows/LM哈希 | 弱密码快速破解 |

示例(使用John the Ripper破解/etc/shadow中的root密码)

unshadow /etc/passwd /etc/shadow > hashes.txt  # 合并passwd和shadow文件
john hashes.txt                                 # 开始破解(默认使用字典)
john --show hashes.txt                          # 显示破解结果

注意:破解过程需合法授权,否则可能违反《网络安全法》。

Linux服务器密码如何查看?-图3
(图片来源网络,侵删)

安全建议

  1. 禁止直接明文存储密码:应用系统应使用加盐哈希存储(如bcrypt、Argon2)。
  2. 启用双因素认证(2FA):减少密码泄露风险。
  3. 定期审计密码策略:通过chage -l username查看用户密码过期时间,强制定期更换。
  4. 限制root登录:禁止远程直接登录root,使用sudo提权。

相关问答FAQs

Q1: Linux系统真的无法直接查看明文密码吗?
A1: 是的,Linux系统不存储明文密码,仅存储加密后的哈希值,即使root用户也只能看到/etc/shadow中的哈希字符串,无法直接获取明文,若需恢复密码,必须通过重置(如GRUB单用户模式)或破解工具(需授权)。

Q2: 如何判断服务器是否遭遇密码暴力破解?
A2: 可通过以下方式排查:

  1. 查看失败登录日志:grep "Failed password" /var/log/secure | awk '{print $(NF-3)}' | sort | uniq -c | sort -nr,统计高频IP;
  2. 使用fail2ban工具自动封禁可疑IP;
  3. 检查/etc/shadow文件修改时间,若异常更新可能存在密码篡改风险。
分享:
扫描分享到社交APP
上一篇
下一篇