LinuxSSH安全如何加固_SSH安全配置最佳实践

2次阅读

linux ssh安全加固的核心是显式授权,需禁用密码登录、root直连和全网访问,启用ed25519密钥认证,限制allowusers与listenaddress,配置fail2ban及最小权限sudo,并关闭x11forwarding等无用功能。

LinuxSSH安全如何加固_SSH安全配置最佳实践

Linux SSH 安全加固的核心,是把“默认开放”变成“显式授权”——不靠运气防攻击,而靠配置堵漏洞。重点不在砌功能,而在切断最常被利用的路径:密码爆破、root直连、全网可访。

密钥登录必须启用,密码认证必须关闭

密码登录是暴力破解的入口,哪怕密码再强,也扛不住自动化工具轮询。密钥认证本质是“你有私钥才进门”,不可复制、不可猜测。

  • 先本地生成安全密钥:ssh-keygen -t ed25519 -C “admin@prod”(OpenSSH 8.8+ 已弃用老旧 rsa,ed25519 更快更稳)
  • 上传公钥到服务器:ssh-copy-id -i ~/.ssh/id_ed25519.pub -p 22222 user@server
  • 确认能免密登录后,再改配置:PasswordAuthentication noPubkeyAuthentication yes
  • 客户端连接时加 -o PreferredAuthentications=publickey,避免 fallback 到密码提示

root登录必须禁用,普通用户需有可控提权路径

允许 root 远程登录等于把管理员钥匙挂在门把手上。真实运维中,应先建好带 sudo 权限的普通账户,再关掉 root 通道。

  • 配置项设为:PermitRootLogin no(如确需密钥登录 root,可用 prohibit-password 折中)
  • 创建部署用户:useradd -m -s /bin/bash deploy
  • 授予最小必要 sudo 权限,例如:deploy ALL=(ALL) NOPASSWD: /bin/systemctl restart nginx
  • 重启前务必执行 sshd -t 检查语法,并用新终端测试登录,别在唯一会话里 reload

访问控制要精细,不能只靠改端口

把 SSH 端口从 22 改成 22222 能过滤掉 90% 的脚本扫描,但对定向攻击无效。真正有效的是限制“谁能在哪连”。

  • AllowUsers deploy@192.168.10.* admin@2001:db8::/64 锁定可信来源(白名单比黑名单可靠)
  • 配合 ListenAddress 10.0.1.5:22222,让 SSH 只监听内网管理地址或指定公网 IP,不绑定 0.0.0.0
  • 防火墙同步放行:ufw allow from 192.168.10.0/24 to any port 22222 或 firewalld 富规则
  • 限制尝试次数:MaxAuthTries 3,防并发撞库;LoginGraceTime 30 缩短登录等待窗口

配套机制要跟上,单点加固容易失效

SSH 配置只是第一道门,后面还得有监控、审计和自动响应,形成闭环。

  • 安装 fail2ban,监控 /var/log/auth.log,对 5 分钟内失败 4 次的 IP 封禁 1 小时
  • 关闭无用功能:X11Forwarding noUseDNS noTCPForwarding no(除非明确需要隧道)
  • 日志审计不能少:确保 rsyslog 正常运行,关键操作(sudo、su、ssh 登录)写入集中日志系统
  • 定期检查账户:cut -d: -f1 /etc/passwd | xargs -I{} ssh {}@localhost echo OK 2>/dev/NULL 快速验证可用性
text=ZqhQzanResources