有没有办法在用户尝试以任何无效用户名登录时自动阻止 IP 地址?我已经有了:
[ssh]
enabled = true
port = ssh
filter = sshd
logpath = /var/log/auth.log
maxretry = 3
bantime = 31536000
在/etc/fail2ban/jail.conf
答案1
首先,定义无效用户的过滤器filter.d/sshd-invaliduser.conf
:
[INCLUDES]
before = common.conf
[Definition]
_daemon = sshd
failregex = ^%(__prefix_line)s[iI](?:llegal|nvalid) user .*? from <HOST>(?: port \d+)?\s*$
ignoreregex =
[Init]
journalmatch = _SYSTEMD_UNIT=sshd.service + _COMM=sshd
然后启用它jail.local
:
[sshd-invaliduser]
enabled = true
maxretry = 1
port = ssh
logpath = %(sshd_log)s
backend = %(sshd_backend)s
这适用于 Debian 9 上的 fail2ban 0.9.6-2。
答案2
换句话说,无效用户可能有 2 次尝试机会,而有效用户的无效密码有 5 次尝试机会。如何在 fail2ban 中实现这一点?
反对这样做的一个令人信服的论据是,它让攻击者知道用户名是否有效,从而大大减少了暴力攻击的搜索空间。
我在尝试做同样的事情时发现了你的问题,但现在我改变了主意。除了保密的好处之外,为什么要通过尽早切断来节省攻击者的时间?
答案3
我无法帮助您使用 fail2ban,但我使用denyhosts 非常成功。您可以调整很多参数,它还有一个分布式数据库,您可以在其中发送和接收其他 badhosts。
以下是更详细的操作方法:
安装denyhosts
包 ( sudo apt-get install denyhosts
)
查看中的默认配置,您可能会对、和选项/etc/denyhosts.conf
感兴趣。DENY_TRESHOLD_INVALID
DENY_TRESHOLD_VALID
DENY_TRESHOLD_ROOT
至于同步服务器,它默认是禁用的,您需要通过取消注释SYNC_SERVER
选项来启用它。
PURGE_DENY
如果您将自己封锁,将选项设置为 1w 或类似的选项也不错,因此该条目将在一周后被清除,您将能够再次登录。
答案4
您可以通过启用 roundcube 部分来增强您的安全性。Roundcube 确实有可用的验证码插件可以缓解这种情况,但如果用户必须输入验证码才能登录邮件,他们会抱怨。
Fail2ban 为此提供了一个简单的解决方案。
首先,我们需要将 roundcube 添加到/etc/fail2ban/jail.conf
[roundcube]
enabled = false
port = http,https
filter = roundcube
action = iptables-multiport[name=roundcube, port="http,https"]
logpath = [YOUR PATH TO ROUNDCUBE HERE]/logs/errors
maxretry = 5
findtime = 600
bantime = 3600
[YOUR PATH TO ROUNDCUBE HERE]
将上面的内容更改为您的实际 roundcube 文件夹
例如/home/roundcube/public_html/logs/errors
接下来,我们需要创建一个过滤器。
添加/etc/fail2ban/filter.d/roundcube.conf
[Definition]
failregex = IMAP Error: Login failed for . from <HOST>(\. . in .?/rcube_imap\.php on line \d+ \(\S+ \S+\))?$
ignoreregex =
现在我们已经掌握了基础知识,我们需要测试我们的过滤器。为此,我们使用fail2ban-regex
。
享受