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


13

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

我已经进行了各种锁定,例如使用ssh-keys并不允许使用密码,并且不允许远程root用户登录。

我有什么办法可以摆脱这些攻击尝试?如果没有,我应该提出具体的防御措施吗?


1
标记要迁移到security.se的地方,它的话题性更高
Rory Alsop

1
@罗里“在别人身上有更多的话题”和“话题不在这里”之间是有区别的–似乎话题在这里很明显
Michael Mrozek

@Michael,不用担心。有吉尔(Gillles)的朋友来看看它,因为它可能不在这里。
罗里·阿尔索普

@Rory好的,我会问他;他通常很擅长说服我一些我认为是{off,on} topic实际上是{on,off} topic的东西
Michael Mrozek

1
我的问题似乎已经改变了,面目全非。在我最初提出的问题中,我实际上是在尝试找出每个站点遭受暴力攻击是否普遍-即这是生活的事实。Matteo回答“这确实是生活的事实”。问题的第二部分是询问我除了采取防御措施外还可以采取哪些措施积极阻止这些攻击。如果仅某些站点遭受暴力攻击,这将是一个相关的次要问题。布鲁斯以他的轻率想法回答了这个问题。我并不是真的要求防守技巧。
JW01 2011年

Answers:


14

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

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

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

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

  • 请确保将工具正确配置为DenyHosts,因为您可以将自己锁定在外(例如,您可以配置从未经过过滤的计算机或网络)

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


1
啊啊 我开始觉得自己很特别。谢谢你让我挺直。
2011年

扩展到Matteo上,您的问题几乎得到了完全回答refs Q1.3 denyhosts.sourceforge.net/faq.html#1_0
whoami

@whoami感谢您的链接,一个不错的摘要。尽管当我看到使用不同的端口提示时,我始终会想到的一件事是' 您怎么知道您选择的替代端口已经不被其他东西使用?'
JW01 2011年

1
请注意DenyHosts和类似工具,因为它们会带来额外的复杂性,即它们可能会自己创建安全问题,请参见。关于unix.stackexchange.com/questions/2942/…
maxschlepzig

1
另外,请注意DenyHosts,因为您可能会将自己锁定在计算机之外。一个简单的操作使apt-get install denyhosts我被锁定在机器之外。
Naftuli Kay 2011年

15

我按照以下说明为每次错误密码的SSH登录尝试添加了7秒的延迟。我将sshd设置为蛮力扫描仪的“ tarpit”。

我还应该补充一点,就是我修改了tarpit sshd日志,并输入了失败的密码。这可能不完全合乎道德,因为它可以使root用户了解普通用户将自己的密码键入错误的密码,但是由于我是唯一的“真实”用户,因此我认为可以。

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


另外,请使用非标准端口,并使用密钥而不是密码。然后他们几乎没有希望了(假设他们没有掌握密钥,无论如何都应该使用密码)。
卡勒姆·罗杰斯

这是一个很好的答案,因为它有点“冒犯”方法,而不是纯粹的“防御”,我认为这会增加道德。
JW01 2011年

9

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


3
+1相当有用,因为它可以限制烦恼,但请不要将此误认为是安全措施-与防蚊锁相比,这更像是屏蔽蚊子的纱门。
Piskvor在

1
+1这也节省了服务器资源。
Xeoncross 2011年

6

同意@Matteo的回答;您所看到的实际上是成千上万的僵尸系统在您的服务器上执行分布式蛮力攻击,因为上面运行着一个网站,这意味着可能有一些用户可能拥有一个可能被猜中的登录帐户脚本小子的工作量非常小-他有一个程序,命令数千个僵尸一次对数百个网站主机进行暴力破解,并仅列出成功的回报列表。

同样,您有时可能会在/var/log/apache2/access.log文件中看到许多“ http://your.web.host/phpmyadmin/”的排列。这些是针对设置PHPMyAdmin的最常用方法的自动扫描,如果发现一个,则会尝试使用多种已知的攻击(顺便说一句,这就是为什么我开始告诉客户请使用我亲自设置的PMA网站以及保持最新状态,而不是安装自己的版本并忘了对其进行更新,但是现在我们不切实际了。

除了发送原始命令外,它甚至不花时间或带宽。着火了,忘了。

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


4

尝试配置Fail2ban。它提供了一种搜索失败尝试的非常灵活的方法,并且具有用于SSH,HTTP和通用服务的模板。

Fail2ban将根据您的操作更新iptables


3

您可以使用IPTABLES停止通信,而无需运行Fail2Ban或DenyHosts之类的守护进程。

#  Allows SSH connections (only 4 attempts by an IP every 3 minutes, drop the rest to prevent SSH attacks)
-A INPUT -p tcp -m tcp --dport 22 -m state --state NEW -m recent --set --name DEFAULT --rsource
-A INPUT -p tcp -m tcp --dport 22 -m state --state NEW -m recent --update --seconds 180 --hitcount 4 --name DEFAULT --rsource -j DROP
-A INPUT -p tcp -m state --state NEW --dport 22 -j ACCEPT

2

如果可以管理,我发现处理此类问题的最佳方法是使用VPN。这样,他们唯一可以针对的就是VPN。除了向所有人开放的服务(例如您的Web服务器)以外,不应向全世界开放任何服务。其他所有内容都应由防火墙阻止。现在,您真正需要担心的唯一问题就是VPN。如果可以,请从管理服务器的计算机获取静态IP,并将VPN锁定为该特定IP地址。这确实是阻止人们尝试强行使用密码的唯一方法。


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.