香港服务器 SSH 权限设置与加固指南
一 基础安全基线
- 使用密钥登录并禁用密码
- 客户端生成密钥:ssh-keygen -t rsa -b 4096 -C "email@example.com"
- 上传公钥:ssh-copy-id -i ~/.ssh/id_rsa.pub user@server_ip
- 服务器端启用密钥并禁用密码:在 /etc/ssh/sshd_config 中设置 PubkeyAuthentication yes、PasswordAuthentication no,重启 sshd:systemctl restart sshd
- 禁止 root 直接登录
- 设置:PermitRootLogin no,始终通过普通用户登录后再 sudo 提权
- 修改默认端口
- 设置:Port 2222(示例),同时更新云平台安全组/防火墙放行新端口,先用新端口测试成功后再关闭 22,避免锁死
- 限制可登录用户/组
- 仅允许指定账户:AllowUsers alice bob
- 仅允许指定组:AllowGroups sshusers
- 禁止某些账户:DenyUsers baduser
以上做法能显著提升暴力破解与自动化扫描的难度,是 SSH 权限控制的起点。
二 访问控制与网络层限制
- 防火墙仅放行必要来源与端口
- UFW:ufw allow 2222/tcp;如需限制来源:ufw allow from 203.0.113.10 to any port 2222;ufw enable
- iptables:iptables -A INPUT -p tcp -s 203.0.113.0/24 --dport 2222 -j ACCEPT;iptables -A INPUT -p tcp --dport 2222 -j DROP
- 基于 TCP Wrappers 的访问控制
- /etc/hosts.allow:sshd: 203.0.113.10
- /etc/hosts.deny:sshd: ALL
- 登录失败锁定(PAM)
- 在部分发行版可用 pam_tally2 限制失败次数与解锁时间,降低暴力破解成功率
通过“来源 IP 白名单 + 端口最小化暴露”,能大幅减少攻击面。
三 文件与目录权限
- SSH 关键文件权限
- chmod 700 ~/.ssh
- chmod 600 ~/.ssh/authorized_keys
- chown -R user:user ~/.ssh
- 如启用 SELinux/AppArmor,保持或调整为与 SSH 策略一致的安全上下文,避免权限过宽导致提权风险
正确的本地权限是密钥认证能否成功的前提,也能阻止本地其他用户读取私钥或篡改授权列表。
四 会话与账号细粒度控制
- 会话超时与并发
- ClientAliveInterval 300(每 5 分钟发送保活)
- ClientAliveCountMax 0(无响应即断开)
- MaxStartups 10(限制并发未认证连接,缓解 DoS)
- 命令受限登录(适合交付给特定系统账号)
- 在 authorized_keys 中为某公钥加前置命令:command="/usr/bin/rsync" ssh-rsa AAA... user@host
- 日志与监控
- 提高日志级别:LogLevel VERBOSE
- 使用 fail2ban 自动封禁反复失败的来源 IP,配合日志分析及时发现异常登录
这些设置能在账号层面与连接层面进一步收紧权限边界。
五 变更与回滚的稳妥流程
- 备份配置:cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak
- 逐项修改并在新端口进行连接测试:ssh -p 2222 user@server_ip
- 云平台安全组/本地防火墙同步放行新端口后再关闭旧端口
- 确认无误后重启:systemctl restart sshd;如需回滚,用备份文件覆盖并重启服务
按“先并行验证、后切换、再清理”的顺序操作,可显著降低误操作导致无法远程登录的风险。