项目

通用

个人资料

操作

如何配置 Redmine 的 Fail2ban

安装

如果没有安装 fail2ban,请使用 apt-get 安装(或使用 yum、pacman 或其他包管理器)

 apt-get install fail2ban

配置

在 /etc/fail2ban/filter.d/redmine.conf 中创建一个新文件
说明:在这里,我们创建一个新的过滤器以匹配失败的登录尝试

# redmine configuration file
#
# Author: David Siewert
#
# $Revision$
#
[INCLUDES]

# Read common prefixes. If any customizations available -- read them from
# common.local
before = common.conf

[Definition]

datepattern = %%Y-%%m-%%d %%H:%%M:%%S %%Z$
failregex = Failed [-/\w]+ for .* from <HOST>

# Option:  ignoreregex
# Notes.:  regex to ignore. If this regex matches, the line is ignored.
# Values:  TEXT
#
ignoreregex =

# Source:
#http://www.fail2ban.org/wiki/index.php/MANUAL_0_8

在 /etc/fail2ban/jail.conf 中添加以下行
说明:在这里,我们启用我们刚刚创建的过滤器并添加一些配置选项

[redmine]
enabled  = true
filter   = redmine
port     = 80,443
#backend  = polling
action   = iptables-allports[name=redmine]
logpath  = /var/log/redmine/default/production.log
maxretry = 5
findtime = 7320
bantime  = 7320

备注 1
如果你的 web 服务器使用本地时间,那么你需要根据与 UTC 时间的偏差相应地增加 findtime 和 bantime
在我的示例配置中,我使用了 2 小时 + 2 分钟 = 3600 * 2 + 120 = 7320
因为我的本地服务器时间总是比 UTC 时间早 2 小时,所以我额外加了 2 分钟以防万一

备注 2
如果你不在生产模式下使用 redmine,那么你也需要更改 logpath

备注 3
如果此配置不起作用,你可以尝试取消注释 "backend = polling"

测试

如果你做了任何更改,你可以使用以下命令检查语法

fail2ban-regex /var/log/redmine/default/production.log /etc/fail2ban/filter.d/redmine.conf 

最后,启动/重启 fail2ban

/etc/init.d/fail2ban restart

并测试你是否能把自己封禁 :)
注意:你的失败登录尝试需要匹配 /etc/fail2ban/jail.conf 中的 maxretry 值

Jan Catrysse 更新 近 3 年前 · 5 次修订