我是Ubuntu的,我有iptable的规则,使数据包应该被丢弃,如果我在一分钟内5login。
这工作正常,但20分钟后,黑客开始蛮力。
我想,如果有蛮力的尝试,那么该IP应该去hosts.deny。
有没有可能做到这一点,而不使用任何第三方软件
你对第三方软件有什么反感?
Denyhosts是Ubuntu的软件包,可以直接使用,并且经常在这里推荐 。 如果你想要的话,你可以编写你自己的脚本来完成拒绝服务器的function,但是那会是什么呢?
我肯定会推荐使用像Fail2ban或DenyHosts这样做。 这正是他们所做的,就像Zoredache说的,我无法想象为什么你会遇到使用第三方程序的问题。
话虽如此,你可以使用IPtables的recent模块,它存在于较新版本的软件中。 (我不确定这是多么的新鲜,但是如果你保持更新的话,我认为你应该做到这一点)。这不像第三方程序那样容易configuration或function强大,但它是一个可能性。 一套这样的规则:
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>replace为通常用来识别暴力攻击的任何IPtables选项; 例如,它可能是类似的东西
iptables -A INPUT -m recent -p tcp --dport 22 --name nobruteforce --set -j DROP
尽pipe请注意每个到达端口22的数据包(与先前的规则都不匹配)会引发这个问题。 对recent模块要小心,因为如果你的规则产生误报,它可能会严重地搞砸了。 如果你必须使用它,为了限制后果,我build议在第二条规则中增加一个时间限制和/或最小命中要求:
iptables -A INPUT -m recent --name nobruteforce --rcheck --seconds 7200 --hitcount 5 -j DROP
这只会在接收到5个暴力数据包后才能阻止数据包,在2小时(7200秒)结束时,将从黑名单中删除源地址。
有关ipt_recent更多信息, ipt_recent访问http://snowman.net/projects/ipt_recent/
阻止ip的另一种解决scheme是移动sshd正在监听的端口。 大多数脚本小子不会在另一个端口上找SSH。
您也可以closures密码authentication,只使用公钥authentication。
另一个select是端口敲门人(像敲)。
有一个名为denyhosts的软件包可以安装它。这将适用于您的情况,并且在发现login尝试阈值之后,它将阻止攻击者。 apt-get install denyhosts会做。