解决在Debian上通过1Panel安装Fail2ban时失败的问题

这是 Debian 12 系统下一个非常典型的兼容性小问题。

报错日志中,最核心的错误是这一行:

ERROR Failed during configuration: Have not found any log file for sshd jail

(错误:配置失败:没有找到 sshd 监狱的日志文件)

为什么会这样?

你的安装脚本里有一段逻辑:如果找不到 /var/log/secure(CentOS 常用),它就会默认将日志路径配置为 /var/log/auth.log

但是,Debian 12 默认更改了日志管理方式。它现在默认使用 systemd-journald 来记录日志,不再预装 rsyslog。因此,你的系统里根本不存在 /var/log/auth.log 这个文件。Fail2ban 启动时找不到这个被硬性指定的日志文件,就直接崩溃退出了。

如何解决?

你有两种方法可以修复这个问题。推荐使用方法一,因为这是最快且最不需要修改脚本配置的方法。

直接用方法2就行,不用装软件.

方法一:安装传统的日志服务(最简单)

既然脚本需要 /var/log/auth.log,我们只需把生成这个文件的服务安装回来即可。

请在终端依次运行以下命令:

Bash

# 1. 安装 rsyslog 服务
apt-get update
apt-get install rsyslog -y

# 2. 启动并设置 rsyslog 开机自启
systemctl enable rsyslog --now

# 3. 重新启动 fail2ban
systemctl restart fail2ban

# 4. 查看 fail2ban 运行状态
systemctl status fail2ban

方法二:修改 Fail2ban 配置以适配 Debian 12(更现代化)

如果你不想额外安装 rsyslog,你可以手动修改刚刚脚本生成的配置文件,让 Fail2ban 直接读取 systemd 的日志。

  1. 编辑配置文件:

    Bash

    nano /etc/fail2ban/jail.local
    
  2. 找到 [sshd] 下面的 logpath = /var/log/auth.log 这一行。

  3. 将那一行删除或者用 # 注释掉,然后替换为 backend = systemd,修改后看起来像这样:

    Ini, TOML

    [sshd]
    ignoreip = 127.0.0.1/8
    enabled = true
    filter = sshd
    port = 22
    maxretry = 5
    findtime = 300
    bantime = 600
    banaction = iptables-allports
    action = %(action_mwl)s
    # logpath = /var/log/auth.log   <-- 注释掉这行
    backend = systemd               <-- 添加这行
    
  4. 保存退出(在 nano 中按 Ctrl+O,回车确认,然后 Ctrl+X 退出)。

  5. 重启服务:

    Bash

    systemctl restart fail2ban
    

留下评论

您的电子邮箱地址不会被公开。 必填项已用 * 标注

95 − 86 =