news 2026/10/13 9:35:29

【Linux 基础知识系列:第二百零三篇】Linux 系统账户安全加固

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
【Linux 基础知识系列:第二百零三篇】Linux 系统账户安全加固

一、简介:为什么要“折腾”账户安全?

  • MITRE ATT&CK矩阵把“Valid Accounts”列为 Top 1 入口:

    • 2022 年 80% 勒索软件通过弱口令/爆破 root入场。

  • 合规要求:

    • 等保 2.0 要求“默认账户管理、口令复杂度、权限最小化”。

    • SOC2、ISO27001 审计首查sudoers与shadow配置。

  • 现实痛点:

    • 开发图方便开PasswordAuthentication yes + PermitRootLogin yes,上线三天被爆破 2 万次。

掌握“账户加固”=低成本把 90% 脚本小子挡在门外,是 Linux 运维、DevOps、云原生安全最划算的投入。


二、核心概念:6 个关键词先搞懂

名词一句话说明本文操作文件
rootUID=0 超级用户,可写任意文件/etc/passwd、/etc/ssh/sshd_config
sudo授权普通用户以 root 身份执行指定命令/etc/sudoers
PAMPluggable Authentication Modules,管控密码/会话/etc/pam.d/{system-auth,password-auth}
shadow保存哈希口令与过期策略/etc/shadow
SSH 密钥非对称认证,弃用口令~/.ssh/authorized_keys
UID/GID用户/组 ID,<1000 为系统保留useradd -u 2023

三、环境准备:3 分钟拉起实验机

  1. 系统

    • CentOS Stream 9 / Debian 11(内核 ≥5.10)

  2. 权限

    • 全程需 root,建议云主机快照备份

  3. 安装补充包

    # CentOS sudo dnf install -y policycoreutils-python-utils # Debian sudo apt install -y libpam-pwquality
  4. 实验目录

    mkdir -p ~/security-lab && cd ~/security-lab

四、实际案例与步骤:5 大关卡,复制即运行

每段脚本均可chmod +x xxx.sh && ./xxx.sh直接执行,已加set -euo pipefail防呆。


4.1 禁用 root 远程登录:一键脚本

场景:防止爆破,保留本地终端应急。
文件:/etc/ssh/sshd_config

#!/usr/bin/env bash # file: 01-disable-root-sshd.sh set -euo pipefail CONF=/etc/ssh/sshd_config cp $CONF ${CONF}.bak.$(date +%F) # 1. 关闭 root 远程 sed -i 's/^#PermitRootLogin.*/PermitRootLogin no/' $CONF sed -i 's/^PermitRootLogin.*/PermitRootLogin no/' $CONF # 2. 关闭密码认证(强制密钥) sed -i 's/^#PasswordAuthentication.*/PasswordAuthentication no/' $CONF sed -i 's/^PasswordAuthentication.*/PasswordAuthentication no/' $CONF # 3. 重启生效 systemctl restart sshd echo "✔ root 远程登录已禁用,请确保普通用户密钥已部署"

验证:

ssh root@127.0.0.1 # 预期:Permission denied (publickey).

4.2 密码复杂度策略:PAM 一招搞定

场景:防止“123456/Qweasd”拖库。
文件:CentOS/etc/pam.d/system-auth;Debian/etc/pam.d/common-password

#!/usr/bin/env bash # file: 02-password-policy.sh set -euo pipefail # CentOS & Debian 通用模块 PWQUALITY=/etc/security/pwquality.conf cp $PWQUALITY ${PWQUALITY}.bak cat > $PWQUALITY <<'EOF' # 最小长度 12,大小写+数字+特殊字符各 1 minlen = 12 minclass = 4 # 禁止与旧密码重复 3 次 maxrepeat = 3 # 3 次失败锁定 300 秒(faillock 见下节) EOF echo "✔ 密码策略已更新,立即对新用户生效"

测试:

useradd testuser echo "Test@123456" | passwd testuser # 预期:BAD PASSWORD: is too simple

4.3 失败锁定 + 解锁:faillock 模块

场景:防暴力爆破。
文件:/etc/pam.d/system-auth/common-auth

#!/usr/bin/env bash # file: 03-faillock.sh set -euo pipefail # 1. 备份 cp /etc/pam.d/system-auth /etc/pam.d/system-auth.bak # 2. 插入 faillock 行(CentOS 示例) sed -i '/^auth.*pam_unix.so/a auth required pam_faillock.so preauth silent audit deny=3 unlock_time=300' /etc/pam.d/system-auth sed -i '/^auth.*pam_unix.so/a auth [default=die] pam_faillock.so authfail audit deny=3 unlock_time=300' /etc/pam.d/system-auth # Debian 用 pam_tally2 或 pam_faillock,同理 # 3. 查看/手动解锁 echo "查看锁定列表:" faillock echo "解锁用户 testuser:" faillock --user testuser --reset

4.4 最小化 sudo:白名单机制

场景:开发只给systemctl restart nginx,不给全 root。
工具:visudo

#!/usr/bin/env bash # file: 04-sudo-whitelist.sh set -euo pipefail # 1. 创建运维组 groupadd -g 2023 ops # 2. 追加 sudoers(使用 EDITOR=vi 避免语法错误) tee /etc/sudoers.d/ops <<'EOF' # 仅允许 ops 组用户执行指定命令 %ops ALL=(root) NOPASSWD: /bin/systemctl restart nginx, /bin/systemctl status nginx, /bin/journalctl -u nginx EOF # 3. 把开发加入组 usermod -aG ops dev1 echo "✔ dev1 登录后执行:sudo systemctl restart nginx"

验证:

su - dev1 sudo systemctl restart nginx # 成功 sudo reboot # 失败:not allowed

4.5 账户生命周期:自动清理“幽灵”账号

场景:项目结束,外包账户无人删除,成为后门。
策略:90 天未登录即失效。

#!/usr/bin/env bash # file: 05-user-audit.sh set -euo pipefail # 1. 列出最近 90 天未登录的普通用户(UID≥1000) awk -F: '$3>=1000 && $7 !~ /nologin|false/ {print $1}' /etc/passwd | while read user; do lastlog -u "$user" | grep -q "Never\|>90 days" && echo "Stale user: $user" done > stale-users.txt # 2. 批量失效(人工复核后再执行) while read user; do chage -E0 "$user" # 立即过期 usermod -L "$user" # 锁定 done < stale-users.txt

建议:把脚本加入月度 Cron,输出邮件给安全团队。


五、常见问题与解答(FAQ)

问题现象解决
visudo报syntax error手动改/etc/sudoers务必用visudo -c检查,错误会无法 sudo
设置PasswordAuthentication no后密钥也没法登录未上传公钥提前ssh-copy-id 普通用户,保留一跳终端不退出验证
faillock 不生效仍无限次尝试确认 PAM 行顺序,faillock 必须放在 pam_unix 前
锁定 root 自己root 被 faillock 锁用单用户模式或云平台 VNC 救援,执行faillock --user root --reset
外包拒绝过期业务说“还要用”走审批流,延长90+90 天,留审计记录

六、实践建议与最佳实践

  1. 变更“三跳”原则
    改配置前 → 开第二终端跳板 → 验证成功再退出,防止把自己锁死。

  2. 配置即代码(IaC)
    把所有改动写成 Ansible playbook,Git 版本管理,回滚 1 秒完成。

  3. 密钥先行,密码后备
    强制ed25519密钥:ssh-keygen -t ed25519 -C ops@company
    密码仅给应急,且 12 位随机:pwgen -sy 12 1

  4. sudo 审计
    开启log_output:

    Defaults log_output

    日志集中到 Graylog/ELK,发现sudo bash立即告警。

  5. 定期基线扫描
    用 Lynis 或 OpenSCAP 每周跑

    lynis audit system --profile custom.prf
  6. 云上增强

    • AWS 用 IAM Role + Systems Manager,弃用 SSH 密钥,零密码。

    • 阿里云启用“安骑士”防暴力,与 faillock 双保险。


七、总结:一张脑图带走全部要点

账户安全加固 ├─ 远程:root 禁止 / 密钥认证 / 修改端口 ├─ 密码:PAM 复杂度 / 90 天过期 / faillock 3 次锁定 ├─ 权限:sudo 白名单 / 日志审计 ├─ 清理:幽灵账号 / 定期基线 └─ 文化:配置即代码 + 双终端验证

完成本文 5 个脚本,你的服务器将:

  • 减少 90% ssh 爆破流量

  • 满足等保/ISO 审计口令要求

  • 杜绝“离职员工账户还能登”尴尬

把脚本纳入 GitLab CI,每次上架新节点自动跑一遍——让“账户安全”从一次性救火,变成可持续、可审计、可回滚的例行工程。祝你加固顺利,远离“裸奔”!

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/14 4:52:27

打卡信奥刷题(2549)用C++实现信奥 P2113 看球泡妹子

P2113 看球泡妹子 题目背景 2014 年巴西世界杯开幕了&#xff0c;现在满城皆是世界杯&#xff0c;商家们利用它大赚一笔&#xff0c;小明和小红也借此机会增进感情。 题目描述 本届世界杯共有 nnn 支球队&#xff0c;mmm 场比赛。男球迷小明喜欢看比赛&#xff0c;女球迷小红喜…

作者头像 李华
网站建设 2026/10/13 12:21:59

四天学会一本书的公司靠谱吗

四天学会一本书的公司靠谱吗&#xff1f;深度解析速成教育的真相与选择在知识焦虑与效率至上的时代&#xff0c;“四天学会一本书”这样的宣传语无疑极具诱惑力。各类培训机构&#xff0c;尤其是以技能提升和资格认证为导向的公司&#xff0c;纷纷推出此类短期速成课程&#xf…

作者头像 李华
网站建设 2026/10/13 18:34:20

低成本高质量:为何越来越多团队选择EmotiVoice?

低成本高质量&#xff1a;为何越来越多团队选择EmotiVoice&#xff1f; 在短视频、播客和互动游戏内容爆发的今天&#xff0c;个性化语音不再只是“锦上添花”&#xff0c;而是用户体验的核心组成部分。然而&#xff0c;要实现自然流畅、富有情感、还能定制音色的语音合成&…

作者头像 李华
网站建设 2026/10/14 6:25:40

EmotiVoice与主流语音框架对比:兼容性与扩展性优势

EmotiVoice与主流语音框架对比&#xff1a;兼容性与扩展性优势 在智能内容创作和人机交互日益深化的今天&#xff0c;用户对语音合成系统的要求早已超越“能听清”的基本功能&#xff0c;转向“有情感”、“像真人”、“可定制”的高阶体验。传统云服务型TTS虽然语音自然度不断…

作者头像 李华
网站建设 2026/10/13 9:53:09

2025年网络安全人员薪酬趋势

网络安全薪资天花板&#xff1a;2025年薪酬趋势与入行指南&#xff08;建议收藏&#xff09; 文章分析了2025年网络安全行业薪酬趋势&#xff0c;指出安全架构师年薪最高&#xff08;国内150万&#xff09;&#xff0c;城市与行业显著影响收入&#xff08;一线城市比二线高30%…

作者头像 李华
网站建设 2026/10/13 0:18:37

EmotiVoice是否支持方言合成?当前进展说明

EmotiVoice 是否支持方言合成&#xff1f;技术路径与实践展望 在智能语音助手、虚拟主播和本地化内容服务日益普及的今天&#xff0c;用户对“听得懂乡音”的语音系统提出了更高期待。人们不再满足于标准普通话的机械播报&#xff0c;而是希望听到熟悉口音中流露的情感与温度—…

作者头像 李华