入门系列之使用fail2ban防御SSH服务器的暴力破解攻击 (2)

在这里,我们可以看到当fail2ban调用禁止IP时实际发生了什么。它使用iptables防火墙软件来实现规则。
当fail2ban开始时,它会调用以下行:

actionstart = iptables -N fail2ban-<name> iptables -A fail2ban-<name> -j RETURN # questionable usefulness iptables -I <chain> -p <protocol> -m multiport --dports <port> -j fail2ban-<name>

这会初始化环境以通过过滤链传递流量。iptables软件基于“漏斗”或“链”控制流量。这些渠道中的每一个都对所有流量应用规则,以确定它是否可接受。

第一行iptables -N fail2ban-<name>创建一个名为“fail2ban-”的新链,其中包含以下服务的名称。这将保留禁止某些IP地址的规则。

下一行,iptables -A fail2ban-<name> -j RETURN为我们刚刚创建的链添加一条规则,告诉iptables将控制权返回给调用此链的链。

最后一行,iptables -I <chain> -p <protocol> -m multiport --dports <port> -j fail2ban-<name>将规则添加到INPUT链,该链立即将控制传递给我们的新fail2ban链。

因此,当前的流程是输入流量由我们的INPUT链处理。此时,它会将规则传递控制权发送到fail2ban链。该链中的第一个规则将控制权传递回称为INPUT链的链。

所以,在这一点上,控制只是来回传递,实际上没有发生任何事情。但是,我们已经设置了一个控制流程,可以容纳其他规则。当我们需要禁止IP地址时,我们可以向fail2ban链添加另一个规则,将其传递回INPUT链。

我们可以看到用于拆除fail2ban规则的补充操作,当服务停止时,这里:

actionstop = iptables -D <chain> -p <protocol> -m multiport --dports <port> -j fail2ban-<name> iptables -F fail2ban-<name> iptables -X fail2ban-<name>

这基本上只是颠倒了我们刚建立的所有规则。

禁用客户端时,将实施此规则:

actionban = iptables -I fail2ban-<name> 1 -s <ip> -j DROP

这告诉iptables丢弃来自该IP地址的任何数据包,这有效地禁止他们甚至再次尝试进行身份验证。

当bantime过去后,这条规则改变了禁令:

actionunban = iptables -D fail2ban-<name> -s <ip> -j DROP

如果您想查看实施了哪些规则以及当前禁止的IP地址,可以通过输入以下内容来检查当前的iptables规则:

sudo iptables -L

如果任何客户被禁止,他们将处于底层链。

第四步 - 重启fail2ban

对配置进行任何更改后,需要重新启动fail2ban以实施新规则。您可以通过输入以下命令来执行此操作:

sudo service fail2ban restart

要测试新规则,您可以创建另一个VPS实例,并在该计算机上有足够的时间错误地进行身份验证,以触发禁止规则。之后,您的SSH不会返回任何提示。

如果查看您配置的主机上的iptable规则,您将看到一条新规则:

sudo iptables -L Chain INPUT (policy ACCEPT) target prot opt source destination fail2ban-ssh tcp -- anywhere anywhere multiport dports ssh Chain FORWARD (policy ACCEPT) target prot opt source destination Chain OUTPUT (policy ACCEPT) target prot opt source destination Chain fail2ban-ssh (1 references) target prot opt source destination DROP all -- xxx-xxxxxxxx.dyn.xxxxxxxxx.net anywhere RETURN all -- anywhere anywhere

您可以从底部看到新规则。

结论

您现在应该通过fail2ban使服务器成获得额外的安全性。虽然这是一个很好的开始,但更完整的解决方案是完全禁用密码身份验证并仅允许基于密钥的身份验证。更多Linux教程请前往腾讯云+社区学习更多知识。

参考文献:《How To Protect SSH with fail2ban on Debian 7》

问答

腾讯云服务器?

相关阅读

教你从0到1搭建小程序音视频

教你快速搭建一场发布会直播方案

移形换影 - 短视频色彩特效背后的故事

此文已由作者授权腾讯云+社区发布,原文链接:https://cloud.tencent.com/developer/article/1178537?fromSource=waitui

欢迎大家前往腾讯云+社区或关注云加社区微信公众号(QcloudCommunity),第一时间获取更多海量技术实践干货哦~

海量技术实践经验,尽在云加社区! https://cloud.tencent.com/developer?fromSource=waitui

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wpyzdz.html