我阅读了 CentOS 中有关 SSH 安全性的一些文档,并注意到 IPTables 中有一条规则,可以根据一定时间范围内的一定数量来删除尝试访问 SSH 端口的 IP。它看起来像这样:
iptables -A INPUT -p tcp --dport 22 -m recent --set --name ssh --rsource
iptables -A INPUT -p tcp --dport 22 -m recent ! --rcheck --seconds 60 --hitcount 4 --name ssh --rsource -j ACCEPT
我已经移动了我的 SSH 端口,但我已经在 SSH 迁移到的端口上实现了此规则。
我的问题是,既然这对于 SSH 来说是理想的,那么不能为其他端口编写吗?应该吗?暴力攻击还有其他方式吗?说你可以为 IPTables 实现一条规则,对整个盒子都这样做,这很疯狂吗?
我认为流量大的服务器几乎可以“绊倒”这条规则,但我还猜测,暴力攻击在很短的时间内会以如此巨大的数量发生,可能会设置一些限制来防止这种情况。
非常感谢SF
答案1
看看 sshguard,它就是这么做的。最初仅为 ssh 编写,现在也涵盖其他服务。http://www.sshguard.net/
答案2
您可以对 SSH 和其他服务执行此操作,但您需要知道预期的连接数。否则,您最终可能会拒绝合法流量。
需要注意的一件重要事情是在制定规则之前先制定这样的规则recent
。
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
否则,您将限制所有数据包而不仅仅是新的连接。
答案3
我个人使用 DenyHost 来完成这项任务。http://denyhosts.sourceforge.net/