Linux账号安全加固需系统性收敛:清理UID为0的非root账号、禁用空口令及无用系统账号;强化密码策略(如/etc/login.defs设PASS_MAX_DAYS 90、PASS_MIN_LEN 12)并启用PAM复杂度校验;SSH禁用root远程登录与密码认证,强制密钥登录;权限分配通过sudo和wheel组精细控制,配合审计追踪。

Linux 账号安全是整个系统防护的起点。加固不是堆砌命令,而是围绕“谁可以登录、用什么方式登录、能做什么、密码是否可靠”这四个核心问题,做系统性收敛。
清理与锁定高风险账号
系统中残留的默认账号、测试账号或空口令账号,是攻击者最常利用的入口。
- 列出所有 UID 为 0 的用户(即拥有 root 权限的账号):
awk -F: '($3 == 0) {print $1}' /etc/passwd —— 确保只有 root 一个;发现其他账号立即处理(删除或锁定) - 检查空口令账号:
awk -F: '($2 == "") {print $1}' /etc/shadow —— 对结果中的每个用户执行 passwd 强制设置强密码 - 禁用或锁定无用系统账号(如 sync、shutdown、halt):
passwd -l (锁定)或 userdel -r (彻底删除)
强化密码策略与账户生命周期
仅靠“改个密码”远远不够,必须让密码本身难以被爆破、复用或长期失效。
Linux 安全审计工具,检查 SSH 配置、开放/监听端口、防火墙规则(ufw/iptables/nftables)、失败登录尝试、sudoers 权限...
- 编辑 /etc/login.defs 设置新用户的默认策略:
• PASS_MAX_DAYS 90(密码最长使用 90 天)
• PASS_MIN_DAYS 7(两次修改间隔至少 7 天)
• PASS_WARN_AGE 14(到期前 14 天提醒)
• PASS_MIN_LEN 12(最小长度 12 位) - 启用 PAM 密码复杂度校验(以 CentOS/RHEL 7+ 为例):
在 /etc/pam.d/system-auth 中添加:
password requisite pam_pwquality.so minlen=12 dcredit=-1 ucredit=-1 lcredit=-1 ocredit=-1 enforce_for_root
—— 要求含数字、大写、小写、特殊符号各至少一个,且 root 也强制遵守 - 对已有用户单独设置(如管理员):
chage -M 90 -m 7 -W 14 -I 30
(-I 30 表示密码过期后 30 天自动禁用账号)
严格管控远程登录(SSH)
SSH 是管理命脉,也是攻击主通道。默认配置极宽松,必须重设底线。
- 禁止 root 直接远程登录:
修改 /etc/ssh/sshd_config,设 PermitRootLogin no - 禁用密码认证,强制密钥登录:
设 PasswordAuthentication no 和 PubkeyAuthentication yes - 限制允许登录的用户或组:
添加 AllowUsers user1 user2 或 AllowGroups admin - (可选但推荐)修改默认端口(如改为 2222),并配合防火墙只放行可信 IP 段
- 配置完成后务必执行:systemctl restart sshd,并用新会话验证,避免锁死
精细化权限分配与审计
避免“一账号走天下”,让每个操作可追溯、可限制、可回收。
- 普通用户需提权时,通过 sudo 授权,而非开放 su 或 root 登录:
用 visudo 编辑 /etc/sudoers,例如:
%admin ALL=(ALL) NOPASSWD: /usr/bin/systemctl restart nginx, /usr/bin/journalctl - 限制谁能使用 su 切换到 root:
在 /etc/pam.d/su 中添加:
auth required pam_wheel.so use_uid group=wheel,再将授权用户加入 wheel 组:
usermod -aG wheel - 开启基础审计:
• 查看最近登录:last -n 20
• 查看命令历史(注意 HISTTIMEFORMAT 和 ~/.bash_history 权限)
• 启用 auditd 监控关键文件(如 /etc/shadow)和特权命令

















