Linux SSH 安全配置最佳实践

1次阅读

linux ssh服务加固需禁用密码登录、启用密钥认证(ed25519)、限制用户/ip、禁止root直连、调整超时与重试策略、修改端口、开启日志审计并定期分析。

Linux SSH 安全配置最佳实践

Linux SSH 服务是远程管理的核心通道,但默认配置存在明显安全隐患。加固 SSH 不需要复杂工具,关键是关闭高风险选项、限制访问行为、启用强认证机制。

禁用密码登录,强制使用密钥认证

密码登录易受暴力破解和字典攻击,密钥认证更安全可靠。操作前务必确保已成功配置并测试过密钥登录,避免锁死自己。

  • /etc/ssh/sshd_config 中设置:
    PubkeyAuthentication yes
    PasswordAuthentication no
    PermitEmptyPasswords no
  • 生成密钥对建议使用 ed25519 算法
    ssh-keygen -t ed25519 -C "admin@server"
  • 公钥上传到目标用户 ~/.ssh/authorized_keys,权限设为 600

限制登录用户与来源 IP

缩小攻击面最直接的方式是控制谁能连、从哪连。

  • 只允许特定用户或用户组登录:
    AllowUsers deploy admin
    AllowGroups ssh-users
  • 如环境固定,可限制来源网段:
    AllowUsers admin@192.168.10.*
    或配合防火墙(如 ufw / iptables)做更精细的 IP 白名单
  • 禁止 root 直接登录:
    PermitRootLogin no(必须启用,而非 prohibit-password)

调整连接与超时策略

减少空闲会话暴露时间,抑制扫描和暴力尝试节奏。

  • 缩短无操作断连时间:
    ClientAliveInterval 300(每 5 分钟发一次心跳)
    ClientAliveCountMax 2(两次失败即断开,总空闲上限约 10 分钟)
  • 限制登录尝试频率:
    使用 fail2ban 监控 /var/log/auth.log,自动封禁多次失败的 IP
  • 修改默认端口(非必需但有混淆效果):
    Port 2222,同时更新防火墙放行新端口

启用日志审计与定期检查

安全不是一劳永逸,持续观察异常行为才能及时响应。

  • 确保 SSH 日志开启且不被覆盖:
    SyslogFacility AUTH
    LogLevel INFO(或 VERBOSE 获取更多细节)
  • 定期查看登录记录:
    last -a 查最近登录
    grep "Failed password" /var/log/auth.log | awk '{print $11}' | sort | uniq -c | sort -nr 快速识别高频攻击源
  • 配置 logrotate 合理轮转日志,保留至少 30 天历史
text=ZqhQzanResources