限速登录尝试是防止某些高速密码猜测攻击的简便方法。但是,很难限制分布式攻击,并且许多攻击在数周或数月内运行缓慢。我个人更喜欢避免使用诸如fail2ban之类的自动响应工具。这有两个原因:
- 合法用户有时会忘记其密码。我不想禁止我的服务器中的合法用户,强迫我再次手动启用他们的帐户(或更糟糕的是,尝试找出100/1000被禁止的IP地址中的哪个是他们的)。
- IP地址对于用户而言不是很好的标识符。如果您在一个IP后面有多个用户(例如,一所在500台学生计算机上运行NAT的学校),则一个用户做出一些错误的猜测会使您陷入痛苦的境地。同时,我看到的大多数密码猜测尝试都是分布式的。
因此,我认为fail2ban(以及类似的自动响应工具)不是保护服务器免受暴力攻击的一种很好的方法。一个简单的IPTables规则集可以减少日志垃圾邮件(我在大多数Linux服务器上都有),如下所示:
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 4 -j DROP
它可以防止在任何60秒的时间内从单个IP到ssh进行4次以上的连接尝试。其余的可以通过确保密码合理可靠来处理。在高安全性服务器上,强制用户使用公共密钥身份验证是另一种停止猜测的方法。