防止SSH攻击


9

我正在尝试设置iptables规则,使其每分钟只能通过IP进行3次尝试,以通过SSH连接到servir,然后丢弃所有连接以防止SSH攻击;但看来我做错了!

-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 60 --hitcount 3 --name DEFAULT --rsource -j DROP
-A INPUT -p tcp -m state --state NEW --dport 22 -j ACCEPT

谢谢

Answers:


10

我认为您最好使用fail2ban,因为您的ipfilter规则还会阻止合法连接。fail2ban连接失败后只会阻止IP。

接下来,一种常见的做法是在IP连接到端口22时将其禁止,并将ssh服务器绑定到另一个端口。如果您的计算机不是众所周知的目标,那么您每周将只面临几个非法连接。

对于您提出的确切问题:

iptables -I INPUT -p tcp --dport 22 -m state --state NEW -m recent --set
iptables -I INPUT -p tcp --dport 22 -m state --state NEW -m recent --update --seconds 60 --hitcount 4 -j DROP

1
由于服务器是低端vps,因此我试图将资源消耗降至最低,同时保持其尽可能的安全。我已经更改了ssh服务器端口。我应该将这些规则保留在新端口上并禁止默认端口(22)吗?
MGP 2012年

Fail2ban实际上是最好的解决方案,即使对于低VPS
MGP

7

您可以使用以下2条规则来实现所需的功能

iptables -I INPUT -p tcp --dport 22 -i eth0 -m state --state NEW -m recent --set

iptables -I INPUT -p tcp --dport 22 -i eth0 -m state --state NEW -m recent --update --seconds 60 --hitcount 3 -j DROP

请注意,使用-Awhich将规则添加到链的末尾可能会违反iptables规则的处理方式,即按顺序排列,因此,如果在到达您之前有一个常规DROP或allow规则,则将永远不会执行它们。

话虽如此,您也可能会发现fail2ban是实现此类块的更好方法。


当我尝试添加这些规则时,出现错误消息:iptables:该名称没有链/目标/匹配。
MGP 2012年

支持fail2ban。
Michael B

4

您可能要尝试使用LIMIT模块。

iptables -A INPUT -p tcp --dport 22 -m limit --limit 3/minute -j ACCEPT
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.