我使用基于证书/密钥的 ssh 身份验证,并在非标准端口上运行 sshd。
我还需要安装denyhosts/fail2ban或基于日志分析的检测吗?我能得到什么好处吗?
答案1
您真的需要从互联网上的任何地方进行 SSH 访问吗?如果您可以将其缩小到几个固定的 IP 范围(如工作或家庭),并将 SSH 访问限制在这些范围内,那么您的情况会更好。
我意识到如果你外出并且需要从随机 IP 范围内的随机无线网络进行访问,那么这种方式就不太好。这就是 VPN 的用途,比如使用双因素身份验证(其中一个是签名的客户端证书)的 OpenVPN,以便进入可以使用 SSH 访问你的机器的环境。
双因素 VPN 比基于证书的 SSH 更安全,并且如果 Openssl 中发现巨大漏洞,您只需在一个地方进行紧急安全更新即可。然后,您只需更新 OpenVPN 服务器,而不必惊慌失措地对所有运行 ssh 的主机进行匆忙修复。
答案2
如果您完全禁用基于密码的登录(sshd_config 中的 PasswordAuthentication = no),那么暴力攻击就会变得更加困难甚至不可能 - 客户端必须提供大量密钥,这些密钥都与帐户或彼此无关。
尽管如此,您可能仍希望阻止发起大量无效登录流量的 IP - 这是一种可能的 DoS 攻击媒介。
Denyhosts 是一种“基于日志分析的检测”解决方案;它会扫描 sshd 身份验证日志以查找登录尝试。这适用于密码和公钥。
Fail2ban 更进一步,允许您使用这些结果更新防火墙规则;它比 Denyhosts 更适合防止 DoS 攻击。