Fail2ban 可以在很多地方进行配置。
$ fail2ban-client -i
Fail2Ban v0.10.2 reads log file that contains password failure report
and bans the corresponding IP addresses using firewall rules.
在 Debian Buster 上,我可以在几个配置文件中编辑我的设置:
/etc/fail2ban/jail.d/defaults-debian.conf
/etc/fail2ban/fail2ban.conf
/etc/fail2ban/jail.conf
/etc/fail2ban/action.d/
最后但同样重要的一点是,一些教程推荐:
cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
这文档fail2ban 说:
修改应在 .local 中进行,而不是在 .conf 中进行。这样可以避免升级时出现合并问题。这些文件有详尽的文档,其中应该有详细信息。
这是否意味着我想要编辑的每个 .conf 文件都应该作为 .local 文件存在?
我很困惑!有人能解释一下吗?
答案1
您只需编辑一个文件。
为了避免系统升级时出现问题,您应该始终只复制jail.conf
并jail.local
修改后者。所有其他 fail2ban 配置文件也一样。
cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
然后编辑此文件并向下滚动到您想要使用的过滤器。
在这些过滤器中添加enabled = true
。我建议不要在开始时启用太多过滤器。一两个就够了。如果您通过 SSH 连接,请小心使用 SSH 过滤器。您可能会把自己锁在外面。
筛选器
查看目录中的filter.d
所有可用过滤器。选择一两个合适的过滤器。务必了解它们的正则表达式匹配的内容以及您需要哪些日志文件。
Fail2ban 适用于日志文件。因此过滤器必须与相应的日志文件匹配。您可以使用
fail2ban-regex <logfile> <filter>
例如
fail2ban-regex /var/log/nginx/default_access.log /etc/fail2ban/filter.d/nginx-botsearch.conf
例如,此过滤器会查找404
NGINX 中的错误access.log
,并在条件匹配时阻止这些错误。有关条件,请参见下文。
编辑完成后重新启动fail2ban:
systemctl restart fail2ban
文件中的其他设置jail.local
:
所有设置都可以是全局的,也可以是过滤器特定的。
bantime = 7200
findtime = 10m
maxretry = 10
意味着 10 分钟内出现 10 次错误将导致 2 小时的禁令。
如果您不想使用 iptables 进行禁止,您可以更改您的banaction
。默认禁止操作使用 iptables,它应该适用于我所知道的所有系统,但您可能无法在熟悉的防火墙界面中看到禁止操作。
banaction = ufw
请参阅 中的操作action.d
。使用此设置,fail2ban 将使用 ufw 来阻止 IP。然后您可以通过 查看禁令ufw status
。
特别是对于 SSH,请确保将您的本地 IP 范围排除在禁止范围之外,这样您就无法禁止自己:
ignoreip = 127.0.0.1/8 ::1 192.168.178.0/24
我建议你不是创建或修改新的过滤器或操作。使用包含的过滤器或操作即可。构建自己的正则表达式模式并不容易,而且日志文件格式会不时更改 - 这会破坏您的过滤器。这样您的系统就不安全了。您也不应该编辑Apaches
默认日志格式。