防止 SSH 攻击

防止 SSH 攻击

我正在尝试设置 iptables 规则,以每分钟仅允许一个 IP 通过 SSH 连接到服务器 3 次,然后丢弃所有连接以防止 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

谢谢

答案1

我认为你最好使用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

答案2

你可以通过以下 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 或允许规则,那么它们将永远不会被执行。

话虽如此,你也可能会发现失败2ban是实现这种块的更好方法。

答案3

您可能想尝试 LIMIT 模块。

iptables -A INPUT -p tcp --dport 22 -m limit --limit 3/minute -j ACCEPT

相关内容