Linux账号安全配置方案_登录风险防控说明【指导】

3次阅读

应禁用密码认证并仅允许 SSH 密钥登录,确保 AuthorizedKeysFile 路径正确、公钥写入且权限严格(~/.ssh 为 700,authorized_keys 为 600),修改 sshd_config 后 reload 服务,并保留逃生会话。

Linux 账号安全配置方案_登录风险防控说明【指导】

如何限制用户只能通过 SSH 密钥登录,禁用密码认证

直接禁用密码登录是降低暴力破解风险最有效的手段之一。关键不是“能不能关”,而是关了之后是否还能登录——必须确保 AuthorizedKeysFile 路径正确、公钥已写入且权限严格。

  • /etc/ssh/sshd_config 中设置 PasswordAuthentication noPubkeyAuthentication yes
  • 确认用户 ~/.ssh/authorized_keys 文件权限为 600,目录 ~/.ssh700,否则 OpenSSH 拒绝读取
  • 修改后必须运行 sudo systemctl reload sshd(或 sudo service ssh reload), 不要用 restart,避免断连后无法恢复
  • 测试新连接前,务必保留一个已登录的 root 或其他密钥可用会话作为“逃生通道”

为什么 PAMfaillockdenyhosts 更适合现代系统

CentOS 8+/RHEL 8+、Debian 10+ 默认启用 pam_faillock.so,它在 PAM 层拦截失败登录,不依赖独立进程和日志轮转解析,响应更快、规则更可控。

  • 启用方式:在 /etc/pam.d/sshd 中添加两行(顺序不能错):
    auth [default=bad success=ok user_unknown=ignore] pam_faillock.so preauth silent deny=5 unlock_time=900 auth [default=die] pam_faillock.so authfail deny=5 unlock_time=900
  • deny=5 表示 5 次失败后锁定,unlock_time=900 是 15 分钟自动解锁(单位秒)
  • 锁定状态可查:faillock --user ;手动解锁:faillock --user --reset
  • 注意:该策略仅对 PAM 认证路径生效(如 SSH 密码登录、su),对密钥登录无效——这也正是你希望的:密钥本就不该被限次

/etc/security/limits.conf 能防爆破吗?不能,但能防资源耗尽

它不参与认证流程,无法阻止登录尝试,但能限制单个用户创建的进程数、打开文件数等,防止恶意脚本或反复 fork 进程拖垮系统。

  • 例如限制某用户最多 10 个并发登录会话:
    username hard maxsyslogins 10 username hard maxlogins 10
  • 更实用的是控制 shell 进程上限:username hard nproc 32,避免 fork bomb 类攻击
  • 修改后需用户重新登录才生效;若配合 systemd-logind,还需检查 /etc/systemd/logind.conf 中的 UserTasksMax 是否冲突
  • 常见误区:把 nofile 设太高(如 65536)反而可能掩盖异常连接行为,建议按业务需要设合理值(如 4096)

账号闲置停用与定期审计该怎么做才不漏掉服务账户

人工查 lastlastlog 容易忽略无人交互但仍在运行的服务账户(比如 nginxredis),真正要防控的是“可用但长期不用”的交互式账号。

  • 筛选 90 天未登录的普通用户(排除系统账号):
    awk -F: '$3 >= 1000 && $3 <65534 {print $1}' /etc/passwd | while read u; do [[$(lastlog -u "$u" | tail -1 | awk '{print $5,$6,$7,$8,$9}') == "Never" || $(date -d "$(lastlog -u"$u"| tail -1 | awk'{print $5,$6,$7,$8,$9}')" +%s 2>/dev/null) -lt $(date -d '90 days ago' +%s 2>/dev/null) ]] && echo "$u"; done
  • 对确认停用的账号,执行 usermod -L -e 1 :-L 锁密码,-e 1 设过期时间为 Unix 纪元(1970-01-01),彻底禁用
  • 特别注意:不要对 sshd 使用的 nologinfalse shell 账户执行 chsh,某些旧版 PAM 会因此拒绝密钥登录

真实环境中,最大的疏漏往往不是配置多复杂,而是忘了给批量创建的 CI/CD 临时账号加过期时间,或者把监控告警账号也加进了 faillock 白名单却没配解锁机制。

星耀云
版权声明:本站原创文章,由 星耀云 2026-01-07发表,共计1849字。
转载说明:转载本网站任何内容,请按照转载方式正确书写本站原文地址。本站提供的一切软件、教程和内容信息仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。本站信息来自网络,版权争议与本站无关。