SSH 登录失败后阻止 IP 地址

SSH 登录失败后阻止 IP 地址

我是 ubuntu,我有 iptable 规则,所以如果我在一分钟内有 5 次登录,数据包就会被丢弃。

一切运行正常,但 20 分钟后,黑客再次开始暴力破解。

我希望如果有暴力破解尝试那么该 IP 应该转到 hosts.deny。

不使用任何第三方软件是否可以做到这一点

答案1

您对第三方软件有何反感?

Denyhosts 是 Ubuntu 的软件包,开箱即用,并且经常受到推崇的这里。如果您愿意,您可以编写自己的脚本,执行与denyhosts完全相同的操作,但这样做有什么意义呢?

答案2

我绝对建议使用 Fail2ban 或 DenyHosts 之类的程序来执行此操作。它们正是为此而设计的,而且正如 Zoredache 所说,我无法想象为什么使用第三方程序会遇到问题。

话虽如此,你可以使用recentIPtables 模块,该模块存在于软件的较新版本中。(我不确定具体有多新,但如果你一直保持更新,我认为你应该有它。)它不像第三方程序那样易于配置或功能齐全,但它是一种可能性。一组规则如下:

iptables -A INPUT -m recent --name nobruteforce --rcheck -j DROP
iptables -A INPUT -m recent <other options> --name nobruteforce --set -j DROP

会将所有与匹配的数据包添加<other options>到黑名单,并阻止来自同一源 IP 地址的任何数据包。您可以<other options>用通常用于识别暴力攻击的任何 IPtables 选项替换;例如,它可能类似于

iptables -A INPUT -m recent -p tcp --dport 22 --name nobruteforce --set -j DROP

但请注意每一个到达端口 22 的数据包(未匹配先前的规则)将触发此操作。请谨慎使用该recent模块,因为如果您的规则产生误报,它可能会严重扰乱一切。如果您必须使用它,为了限制后果,我建议在第二条规则中添加时间限制和/或最低命中要求:

iptables -A INPUT -m recent --name nobruteforce --rcheck --seconds 7200 --hitcount 5 -j DROP

这将仅在收到 5 个暴力破解数据包后才阻止数据包,并且在 2 小时(7200 秒)结束时它将从黑名单中删除源地址。

更多信息ipt_recent请访问http://snowman.net/projects/ipt_recent/

答案3

阻止 IP 的另一种解决方案是移动 sshd 正在监听的端口。大多数脚本小子不会费心尝试在另一个端口上寻找 SSH。

您还可以关闭密码验证,仅使用公钥验证。

另一个选择是端口敲击器(如 knockd)。

如果你还没有这样做,你应该做的一件事是禁用 root 登录

答案4

有一个名为denyhosts的软件包,请安装它。这将适用于您的情况,并且在找到登录尝试的阈值后,它将阻止攻击者。 apt-get install denyhosts就可以了。

相关内容