Bar*_*emy 19
另一个是fail2ban,它依赖于 iptables(因此它适用于任何服务,而不仅仅是 ssh)。使用fail2ban,您可以:
DenyHosts 的一个“缺点”是它需要 tcp 包装器,因此它只能与查看 /etc/hosts.deny 文件的服务一起使用。但是为了公平对待 DenyHosts,sshd 被编译为在大多数 Linux 发行版上使用 TCP Wrappers。我还发现 DenyHosts 比 fail2ban 更容易配置开箱即用(但功能较弱)。
Mic*_*zek 15
我使用 DenyHosts,所以我至少可以回答:
我没有任何无法弥补的缺点,只要你正确使用它:
/etc/hosts.allow
. 有一次我输入密码失败,我把自己锁在外面,有一次工作中有人开玩笑地试图登录我的 root 帐户并将我的工作 IP 列入黑名单,我花了几天才弄清楚为什么我突然无法连接从工作到我的网络了Gil*_*il' 10
针对基于扫描的攻击的简单且在实践中有效的保护是不使用标准端口。443(https 端口)使您面临不同的暴力攻击,这些攻击不会破解您的弱密码,并且可能通过比默认端口(22)更多的防火墙。
大多数防止 ssh 蛮力攻击的方法都是自我 DoS 的好方法(哎呀,我搞砸了配置!哎呀,我做了一堆快速的 rsync,现在被禁止了一天!)或辅助自我 DoS(哎呀,攻击者来自/已经破坏了与我位于同一子网中的机器(动态 IP 范围、大学网络......),我也被禁止了!)。
如果您只从几个地方登录,您可以将源 IP 地址列入白名单。如果您想随时随地通过笔记本电脑或手机 ssh,这显然是不好的。
拥有一个仅侦听 IPv6 连接的 ssh 守护程序应该可以保护您免受扫描几年的影响。但是许多防火墙不允许您以任何合理的方式传输 IPv6。
你没有提到的另一种方法是端口敲门。它不会受到自我 DoS 问题的影响(除了错误配置),但它不能很好地跨越防火墙,并且会增加几秒钟的连接建立延迟。
如果你有好的密码,或者你可以不用密码认证,请禁用密码认证。(对于大多数用例来说,密钥和一次性密码就足够了:如果您不信任客户端机器来存储 ssh 密钥,那么您也不相信它没有键盘记录器)。然后蛮力攻击将花费您一些 CPU 和带宽,但不会让您受到入侵(只要您检查过没有任何密钥来自Debian 低熵 OpenSSL)。
总而言之,请注意更改端口不会显着减少您的风险。您将获得更少的扫描,但您所能切断的只是试图利用旧漏洞和弱密码的唾手可得的果实。只要您使守护程序保持最新状态并强制执行合理的密码或合理的尝试率限制,切换端口就更像是一种责任而不是安全措施。