SSH 加固与审计最佳实践
应用 sshd_config 加固、密钥轮换实践和审计日志记录,强化 SSH 部署的安全性。
SSH 加固与审计最佳实践 是 CoddyKit 上的免费 Cryptology Academy 课时。 这是第 4 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 Cryptology Academy 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 Cryptology Academy 课程共包含 4 节课。
禁用密码身份验证
影响最大的 SSH 加固措施,是在 /etc/ssh/sshd_config 中设置 PasswordAuthentication no。这会强制所有用户使用公钥进行身份验证,从而消除弱密码、重复使用的密码以及暴力破解攻击带来的风险。禁用密码身份验证前,请确保至少安装了一个已授权的密钥,以免将自己锁在系统之外。
限制允许的用户和组
AllowUsers 和 AllowGroups 指令会将 SSH 访问限制为指定用户或指定组的成员。例如,AllowGroups sshusers 只允许 sshusers 组的成员访问。这提供了纵深防御:即使攻击者知道用户名并获得了凭据,除非该账户被明确允许,否则仍会被拒绝 SSH 访问。
更改默认端口
将 SSH 的端口从 22 更改为高位端口属于隐蔽措施,而不是安全措施。不过,这能显著减少自动扫描器针对端口 22 发起扫描所产生的日志噪声,让日志更容易用于分析真正的威胁。请始终将防火墙规则作为主要访问控制手段;端口隐蔽只能作为辅助措施。
禁用根用户登录
设置 PermitRootLogin no 可以阻止通过 SSH 直接进行根用户身份验证。以 root 为目标的攻击者拥有一个确定有效的用户名;一旦成功,便可获得不受限制的权限。推荐的设置是 PermitRootLogin prohibit-password,它只允许通过公钥身份验证登录 root,从而阻止针对 root 的密码暴力破解,同时保留紧急访问能力。
限制身份验证尝试次数
MaxAuthTries 3 将每个连接的身份验证尝试次数限制为三次。三次失败后,服务器会终止连接。这会减缓暴力破解尝试。再结合 fail2ban 或 SSHGuard 的指数退避机制(在反复失败后暂时封禁 IP),暴力破解攻击将变得难以在计算上实现。
登录时间控制
LoginGraceTime 指定服务器在断开连接前等待身份验证成功的时长。默认值为 120 秒;将其缩短为 20 秒可以阻止缓慢的暴力破解尝试,并减少未通过身份验证的连接对资源的占用。ClientAliveInterval 和 ClientAliveCountMax 控制连接健康检查,以便断开空闲或已失效的会话。
限制允许的加密算法
现代 SSH 配置应将算法限制为强度高且较新的选项。在 sshd_config 中,将 Ciphers 设置为 chacha20-poly1305@openssh.com,aes256-gcm@openssh.com,将 MACs 设置为 hmac-sha2-256-etm@openssh.com,并将 KexAlgorithms 设置为 curve25519-sha256。这样可以排除 arcfour、DES 以及基于 MD5 的 MAC 等为向后兼容而可能提供的旧式算法。
使用 fail2ban 阻止暴力破解
fail2ban 会监控身份验证日志,并封禁超过失败登录尝试阈值的 IP 地址。在可配置的时间窗口内达到指定失败次数后,fail2ban 会添加一条 iptables 规则,丢弃来自该 IP 的后续数据包。这种自动化响应无需人工干预,就能让暴力破解攻击变得不切实际。
使用 ssh-audit 进行审计
ssh-audit 工具会连接到 SSH 服务器并评估其配置:检查服务器提供哪些密钥交换算法、主机密钥类型、密码算法和 MAC,并标记已弃用或强度较弱的选项。在加固前后分别对您的服务器运行 ssh-audit,可以提供客观的前后评估,并找出配置缺口。
日志记录与访问审计
SSH 身份验证事件通过 syslog 记录。在 Linux 上,/var/log/auth.log(Debian)或 /var/log/secure(RHEL)会记录每次成功和失败的登录,包括时间戳、用户名、源 IP 以及所使用的密钥指纹。将这些日志发送到集中式 SIEM,可以检测异常的访问模式,例如从意外国家或异常时段发起的登录。
完整的加固配置示例
一份加固后的 sshd_config 会组合使用以下设置:PasswordAuthentication no、PermitRootLogin prohibit-password、MaxAuthTries 3、LoginGraceTime 20、AllowGroups sshusers、受限的 Ciphers 和 MACs、X11Forwarding no,以及 AllowTcpForwarding no(除非需要使用隧道)。每条指令都会消除一种特定的攻击途径,组合起来便形成纵深防御的 SSH 安全态势。
SSH 加固配置
哪个 sshd_config 设置对于消除针对 SSH 的密码暴力破解攻击最有效?
SSH 加固回顾
SSH 加固检查清单:禁用密码身份验证,将访问限制为 AllowGroups/AllowUsers,禁用根用户登录或限制为仅使用密钥登录,设置 MaxAuthTries 3,缩短 LoginGraceTime,仅允许使用现代密码算法,部署 fail2ban 或 SSHGuard,运行 ssh-audit 进行客观评估,并集中记录日志以检测异常。
常见问题解答
「SSH 加固与审计最佳实践」课时是免费的吗?
是的 — 「SSH 加固与审计最佳实践」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 Cryptology Academy 课程的其余内容,请升级到 CoddyKit PRO。 Cryptology Academy 课程共包含 4 节课。
「SSH 加固与审计最佳实践」这节课中我会学到什么?
应用 sshd_config 加固、密钥轮换实践和审计日志记录,强化 SSH 部署的安全性。 你通过在浏览器中直接运行的动手代码来练习 Cryptology Academy,全天候 AI 导师会在你学习这节课的过程中回答你的问题。
学习 Cryptology Academy 需要有经验吗?
无需任何先前经验。CoddyKit 上的 Cryptology Academy 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 4 节课,共 4 节。
「SSH 加固与审计最佳实践」课时需要多长时间?
大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。
我能在这节 Cryptology Academy 课中编写并运行代码吗?
能。每节 Cryptology Academy 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。
此课程中的所有课时
- SSH 握手与主机密钥认证
- 公钥认证与代理转发
- SSH 隧道与端口转发技术
- SSH 加固与审计最佳实践