摘要:在 Linux 系统中,从安全性角度来说,防止用户或其他人轻松重置密码是非常重要的。以下是防止密码被轻易重置的常见方法:--- 1. 禁止单用户模式下的密码重置单用户模式(Single User Mode)允许以 root 权限启动系统,因此在单用...
在 Linux 系统中,从安全性角度来说,防止用户或其他人轻松重置密码是非常重要的。以下是防止密码被轻易重置的常见方法:
---
1. 禁止单用户模式下的密码重置
单用户模式(Single User Mode)允许以 root 权限启动系统,因此在单用户模式下可以轻松修改密码。为避免这一风险:
设置 GRUB 密码
在大多数 Linux 发行版(如 Ubuntu、CentOS)中,使用 GRUB 引导加载程序。如果有人可以通过 GRUB 编辑内核参数,就可以进入单用户模式。可以为 GRUB 设置密码以防止恶意访问。
步骤:
1. 生成 GRUB 加密密码:
```bash
grub-mkpasswd-pbkdf2
```
记录生成的加密密码。
2. 编辑 GRUB 配置文件(通常为 `/etc/grub.d/40_custom` 或 `/etc/grub2.cfg`):
```bash
sudo nano /etc/grub.d/40_custom
```
添加以下内容:
```bash
set superusers="root"
password_pbkdf2 root <加密密码>
```
3. 生成 GRUB 配置文件:
```bash
sudo grub-mkconfig -o /boot/grub/grub.cfg
```
---
2. 禁止通过 initramfs 重置密码
攻击者可能会通过修改内核启动参数绕过密码验证,比如用 `init=/bin/bash` 来直接获取 shell。
解决方法:
- 给 GRUB 设置密码(如上所述)。
- 使用引导加载程序的设置功能禁用 `init=` 参数通过内核传递自定义的指令。
---
3. 限制 `root` 权限访问
通过配置和限制对 root 权限的访问,可以进一步提高系统的安全性。
移除 root 登录权限(SSH)
在 `/etc/ssh/sshd_config` 文件中,设置:
```bash
PermitRootLogin no
```
然后重启 SSH 服务:
```bash
sudo systemctl restart sshd
```
---
4. 配置文件权限的保护
确保密码配置和状态文件的权限是安全的:
- `/etc/shadow` 文件应只有 root 用户可读写:
```bash
sudo chmod 600 /etc/shadow
sudo chown root:root /etc/shadow
```
- `/etc/passwd` 文件权限应严格控制:
```bash
sudo chmod 644 /etc/passwd
sudo chown root:root /etc/passwd
```
---
5. 使用 BIOS 或 UEFI 密码
攻击者可以通过物理访问重新启动服务器并进入单用户模式。通过设置 BIOS 或 UEFI 密码,可以限制进入引导加载器的机会。
措施:
- 进入 BIOS 或 UEFI 设置屏幕,并设置管理员密码。
- 禁用未经授权的 USB 启动。
- 设置硬盘驱动优先为启动项。
---
6. 监控和日志防护
配置日志监控工具以检测和通知系统更改或异常登录行为。可以监控以下关键日志文件:
- `/var/log/auth.log` 或 `/var/log/secure`:登录及认证相关日志。
- `/var/log/syslog` 或 `/var/log/messages`:系统日志。
使用工具如 `auditd` 提供额外的系统观察:
```bash
sudo apt install auditd
sudo systemctl start auditd
sudo auditctl -w /etc/shadow -p wa
```
---
7. 防止物理访问
既然密码重置很多时候需要物理访问设备,可以通过以下方法尽量限制:
- 将服务器放在受控的物理位置(如上锁的机房)。
- 禁用不必要的设备(如 CD/DVD、USB 启动设备)。
- 配合 BIOS 或 UEFI 密码。
---
8. 设置复杂密码策略
通过配置 PAM(Pluggable Authentication Modules)增强密码安全性:
编辑 `/etc/security/pwquality.conf` 文件:
```bash
minlen = 12
minclass = 3
retry = 3
```
这些设置将强制用户使用强密码,防止轻松猜测或篡改。
---
总结
通过以上方法可以有效防止 Linux 系统中的密码被轻松重置,包括设置 GRUB 密码、保护配置文件权限、限制 root 登录等措施。同时确保保持物理防护和定期更新安全补丁,进一步降低系统被攻击的可能性。