Answers:
我使用DenyHosts,因此我至少可以回答:
只要您正确使用它,我就没有任何无法弥补的缺点:
/etc/hosts.allow
。我一次无法输入密码就将自己锁定,一次下班的人试图开玩笑登录我的根帐户并将我的工作IP列入黑名单,这花了我几天的时间才弄清楚为什么我突然无法连接不再工作另一个是fail2ban,它依赖于iptables(因此它可以与任何服务一起使用,而不仅限于ssh)。使用fail2ban,您可以:
DenyHosts的一个“缺点”是它需要tcp包装程序,因此它仅适用于查看/etc/hosts.deny文件的服务。但是为了与DenyHosts保持公平,sshd被编译为在大多数Linux发行版上使用TCP Wrappers。我还发现DenyHosts的配置比fail2ban更容易(但功能不那么强大)。
一个简单且在实践中有效地防止基于扫描的攻击的方法是不使用标准端口。443(https端口)使您遭受不同的暴力攻击,这些攻击不会破解弱密码,并且可能比默认端口(22)通过更多的防火墙。
大多数防止ssh蛮力攻击的方法都是自我DoS的好方法(哎呀,我搞砸了配置!糟糕,我做了很多快速rsync操作,现在被禁止使用!)或辅助自我DoS(糟糕! ,攻击者来自/破坏了与我位于同一子网中的计算机(动态IP范围,大学网络...),而且我也被禁止!)。
如果仅从几个地方登录,则只需将源IP地址列入白名单。如果您想在旅途中使用笔记本电脑或手机进行SSH操作,那显然没有好处。
拥有仅侦听IPv6连接的ssh守护程序应该可以保护您几年不受扫描。但是许多防火墙都不允许您以任何合理的方式传输IPv6。
您没有提到的另一种方法是端口敲门。它不会遭受自我DoS问题(配置错误除外)的困扰,但是它不能很好地跨防火墙,并且可能会增加几秒钟的连接建立延迟。
如果您拥有良好的密码,或者可以不用密码进行身份验证,请禁用密码身份验证。(对于大多数用例,密钥和一次性密码就足够了:如果您对客户端计算机的信任程度不足以存储ssh密钥,那么您也不相信它也没有键盘记录器)。然后,蛮力攻击将花费您一些CPU和带宽,但不会使您遭受入侵(只要您检查了所有密钥都不来自Debian低熵OpenSSL)。
总而言之,请注意更改端口并不会显着减少您的暴露。您将获得较少的扫描,但是您可以切断的只是想利用旧漏洞和弱密码的低挂水果。只要您使守护程序保持最新状态,并强制使用合理的密码或合理的尝试速率限制,切换端口就比安全措施更具责任感。
.ssh/config
。如果防火墙不允许您通过,则锁定是一个问题,最简单的解决方案是坚持使用端口22并监听443。我同意切换端口并不能真正提高安全性,也许我应该更清楚一点。我不知道为什么您认为SSH守护程序不支持密码身份验证是不可能的:仅需在sshd_config
OpenSSH(最常见的实现)中添加一行即可。