我们如何限制 ssh 探测的影响?

JW0*_*W01 13 security ssh

我的网络服务器不断受到各种 IP 地址的攻击。他们尝试五个密码,然后更改 IP 地址。

我已经完成了各种锁定,例如使用 ssh-keys 和不允许密码,以及不允许远程 root 登录。

我能做些什么来摆脱这些攻击企图吗?如果做不到这一点,我是否应该采取特定的防御措施?

Bru*_*ger 15

我按照这些说明为每次错误密码的 SSH 登录尝试添加了 7 秒的延迟。我将我的 sshd 变成了暴力扫描仪的“tarpit”。

我还应该补充一点,我已经修改过,tarpit sshd 记录了失败的密码。这可能不完全合乎道德,因为它让 root 用户可以查看普通用户错误输入的密码作为他们自己的密码,但由于我是唯一的“真实”用户,我认为这没问题。

我没有让它在非标准端口上运行,因为“tarpit”方面不会浪费任何人的时间。


Mat*_*teo 14

这确实是生活中的事实。您可以安装工具来过滤在几次尝试失败后攻击您的主机。

DenyHosts分析您的日志文件并自动将攻击者添加到您的/etc/hosts.deny文件中。

查看有关如何根据您的需要配置它的文档。

更新:评论中建议的一些要点

  • 请务必将工具正确配置为 DenyHosts,因为您可能会将自己锁定在外面(例如,您可以配置从未被过滤的机器或网络)

  • DenyHosts 不会提高您的系统安全性:它仅过滤 IP 级别的攻击(它可能会减少小型机器的负载并减少日志文件的大小,仅此而已)


Wed*_*dge 9

如果只有少数人需要通过 SSH 连接到系统,那么可以考虑将 SSH 移动到非标准端口(例如 6422、8080 等)。仅此一项就可以大大减少登录尝试的次数(并可能保护您免受一些未打补丁的例如,基于 SSH 漏洞利用的蠕虫)。

  • +1 相当有用,因为它限制了烦恼,但不要将其误认为是一种安全措施 - 这更像是一种防蚊的纱门,而不是安全锁。 (3认同)

Sha*_*dur 6

同意@Matteo 的回答;您所看到的本质上是数千个僵尸系统在您的服务器上执行分布式暴力攻击,因为有一个网站在其上运行,这意味着可能有用户可能拥有可能被猜到的登录帐户脚本小子的努力最小——他有一个程序,可以命令成千上万的僵尸一次在几百个网站主机上进行暴力尝试,然后编译一个成功返回的列表。

同样,您有时可能会在您的/var/log/apache2/access.log文件中看到大量“http://your.web.host/phpmyadmin/”的排列;这些是对设置 PHPMyAdmin 的最常见方法的自动扫描,如果发现,将尝试许多已知的漏洞利用(顺便说一句,这就是为什么我开始告诉客户请使用我个人设置的 PMA 站点和保持最新而不是安装他们自己的版本并忘记保持更新,但现在我们偏离了正题)。

除了发出原始命令外,它甚至不花费他的时间和带宽;它的火和忘记。

对于这种情况,另一个非常有用的软件是fail2ban,它使用 iptables 在多次明显错误的登录或其他攻击尝试后阻止连接尝试。